找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

参加活动: 0

组织活动: 0

  • TA的每日心情
    开心
    2016-4-28 11:45
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    mostfun 版主 2016-2-29 17:46 楼主
    本帖最后由 mostfun 于 2017-1-9 09:35 编辑

    嗯,这是3D打印DIY系列的第一话,虽然只是打了个壳壳。
    但比基佬紫更加妖娆的骚绿色也是把它的颜值拉高(?)了几个档次~

    成品:


    (运行正常~

    模型:



    软件用的Cura


    打印参数:


    打印时间约为3小时,想提高打印精度的话可以把层厚改成0.1mm。
    注意:打印支撑类型和粘附平台选择Everywhere和Raft,才能打出原模型大小。


    组件:


    一块arduino uno主控器,一块SHARP GP2Y1010AU0F compact optical dust sensor(灰尘传感器),一块SHARP  i2c 1602显示器


    代码:

    用Arduino软件进行写入:


    [C++] 纯文本查看 复制代码
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <SPI.h>
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    int measurePin = 0; //Connect dust sensor to Arduino A0 pin
    int ledPower = 2;   //Connect 3 led driver pins of dust sensor to Arduino D2
    int samplingTime = 280;
    int deltaTime = 40;
    int sleepTime = 9680;
    float voMeasured = 0;
    float calcVoltage = 0;
    float dustDensity = 0;
    void setup(){
      Serial.begin(9600);
      pinMode(ledPower,OUTPUT);
      lcd.init();                     
      lcd.backlight();
      lcd.setCursor(5, 0);
      lcd.print("Boot...");
      lcd.setCursor(0, 1);
      for(int i=0;i<16;i++)
      {
        lcd.write(0xff);
        delay(250);
      }
    }
    void loop(){
      digitalWrite(ledPower,LOW); // power on the LED
      delayMicroseconds(samplingTime);
      voMeasured = analogRead(measurePin); // read the dust value
      delayMicroseconds(deltaTime);
      digitalWrite(ledPower,HIGH); // turn the LED off
      delayMicroseconds(sleepTime);
      // 0 - 5V mapped to 0 - 1023 integer values
      // recover voltage
      calcVoltage = voMeasured * (5.0 / 1024.0);
      // linear eqaution taken from [url=http://www.howmuchsnow.com/arduino/airquality/]http://www.howmuchsnow.com/arduino/airquality/[/url]
      // Chris Nafis (c) 2012
      dustDensity = 0.17 * calcVoltage - 0.1;
      Serial.print("Raw Signal Value (0-1023): ");
      Serial.print(voMeasured);
      Serial.print(" - Voltage: ");
      Serial.print(calcVoltage);
      Serial.print(" - Dust Density: ");
      Serial.println(dustDensity); // unit: mg/m3
      lcd.init();                     
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("dustDensity:");
      lcd.setCursor(0,1);
      lcd.print(dustDensity);
      lcd.setCursor(9,1);
      lcd.print(" mg/m^3");
      delay(1000);
    }


    因为有同学还是新手,这边给个详细的过程
    先复制上方代码到IDE 里,
    然后
    arduino教程1.png
    教程2.png
    教程3.png
    教程4.png
    就可以使用了
    最后附上
    视频链接



    关注官方公众平台,获得更多信息




    我们的微博:  http://weibo.com/mostfun3d           我们的微信:

    QQ群:212384359

    打赏作者鼓励一下!

    0人打赏

    尊敬的版主先生,我按照上面的源代码(写进相应的那些数字)烧写进芯片后,开机后1602不显示上面的“dustDensity”,只显示下面一行,图片附后,请问是什么原因,怎样才能正常显示2行?

    20160521_173232.jpg

    本帖最后由 yjx189 于 2016-5-22 11:27 编辑

    明白了,我加了一句:"lcd.begin(16, 2); // 设置列和行的LCD的数: “ 以后,就正常显示2行了!只是1602屏上的字,大概以每秒一次左右的频率,轻轻的跳动,,今天发现,那0.15的值永远是不会变的!!!坑爹啊!!!

    20160521_175924.jpg

    我的数值会定在0.49,后面就无限0.49、0.49、0.49、0.49  无任何改变。。。怎么弄啊大神?
    LiquidCrystal_I2C 库要求运行在 [avr] 架构(),可能与你现在运行在 [arc32] 架构上的开发板()不兼容。
    怎样解决这个问题?intel genuine 101
    a354268161 来自手机 注册会员 2017-2-13 21:54
    6#
    有个小新手问我要参数,但他是个近视眼,求高清大图。谢谢。
    发新帖
    发表评论
    高级模式  
    您需要登录后才可以回帖 登录 | 立即注册  
    关闭

    推荐主题 上一条 /4 下一条