查看: 80541|回复: 54

《Arduino程序设计基础》示例程序

  [复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2014-1-17 13:44 | 显示全部楼层 |阅读模式
    arduino-book.jpg


    因为代码比较多,论坛上贴出来太麻烦了,所以我把整理到了我blog上。各示例程序所使用到的类库下载,也提供了链接。
    示例程序分为两部分,1至4章为基础部分,大家可以在以下网址查阅:
    http://www.clz.me/arduino-book/examples/

    5至10章为进阶部分,大家可以在以下网址查阅:
    http://www.clz.me/arduino-book/examples-advanced/


    还可以在github查看例程,或者打包下载例程:
    https://github.com/coloz/Arduino-book

    如有问题和建议,均可在本版提出


    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2014-1-17 14:01 | 显示全部楼层
    本帖最后由 奈何col 于 2014-1-21 23:15 编辑

    2.5.1.1 流水灯实验

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper LED Module
    流水灯效果
    www.openjumper.com
    */
    
    void setup() 
    {
      //初始化I/O口
      for(int i=2;i<8;i++)
      pinMode(i,OUTPUT);
    }
    
    void loop() 
    {
      //从引脚2到引脚7,逐个点亮LED,等待1秒再熄灭LED
      for(int i=2;i<7;i++)
      {
        digitalWrite(i,HIGH);
        delay(1000);
        digitalWrite(i,LOW);   
      }
      //从引脚7到引脚2,逐个点亮LED,等待1秒再熄灭LED
      for(int i=7;i>2;i--)
      {
        digitalWrite(i,HIGH);
        delay(1000);
        digitalWrite(i,LOW);   
      } 
    }
    

    2.5.1.2按键控制LED

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper Button Module
    www.openjumper.com
    */
    
    int buttonPin = 2;
    int ledPin = 13;
    int buttonState = 0; 
    
    void setup() 
    {
      //初始化I/O口
      pinMode(buttonPin,INPUT_PULLUP);
      pinMode(ledPin,OUTPUT);
    }
    
    void loop() 
    {
      buttonState = digitalRead(buttonPin);
      //按住按键时,点亮LED;放开按键后,熄灭LED。
      if(buttonState==HIGH)
      {
        digitalWrite(ledPin,LOW);
      }
      else
      {
        digitalWrite(ledPin,HIGH);
      }
    }
    

    2.5.1.3 新的按键控制方式

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper Button Module 
    按键控制LED
    www.openjumper.com
    */
    
    int buttonPin = 2;
    int ledPin = 13;
    boolean ledState=false;  // 记录LED状态
    boolean buttonState=true;  // 记录按键状态
    
    void setup() 
    {
    //初始化I/O口
      pinMode(buttonPin, INPUT_PULLUP);
      pinMode(ledPin,OUTPUT);
    }
    
    void loop() 
    {
    //等待按键按下
    while(digitalRead(buttonPin)==HIGH){}
    
      //当按键按下时,点亮或熄灭LED
      if(ledState==true)
      {
        digitalWrite(ledPin,LOW);
        ledState=!ledState;
      }
      else
      {
        digitalWrite(ledPin,HIGH);
        ledState=!ledState;
      }
      delay(500);
    }
    




    2.5.2        项目:人体感应灯(数字传感器与继电器模块)

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper Example
    Pyroelectric Infrared Sensor And Relay
    人体感应灯
    http://www.openjumper.com/
    */
    
    int PIRpin=2;
    int RELAYpin=3;
    
    void setup() {
      Serial.begin(9600);
      pinMode(PIRpin,INPUT);
      pinMode(RELAYpin,OUTPUT); 
    }
    
    void loop() {
      // 等待传感器检测到人
      while(!digitalRead(PIRpin)){}
      // 将灯打开10秒,然后关闭
      Serial.println("turn on");
      digitalWrite(RELAYpin,HIGH);
      delay(10000);  
      digitalWrite(RELAYpin,LOW);
      Serial.println("turn off");  
    }
    




    2.5.3.2 使用电位器控制呼吸灯的呼吸频率

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper LEDModule
    www.openjumper.com
    */
    
    int ledPin = 9;  //9号引脚控制LED
    int pot=A0;    //A0引脚读取电位器输出电压
    void setup(){} 
    
    void loop(){ 
      //LED逐渐变亮
      for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) 
      { 
        analogWrite(ledPin, fadeValue);
    //读取电位器输出电压,除以5时为了缩短延时时间
    int time=analogRead(pot)/5;
        delay(time);  //将time用于延时
      } 
      //LED逐渐变暗
      for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) 
      { 
    analogWrite(ledPin, fadeValue);
        delay(analogRead(pot)/5); //读取电位器输出电压,并用于延时
      } 
    }
    

    2.5.3.3        实验:通过光敏电阻检测环境光亮度

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper light sensor 
    www.openjumper.com
    */
    
    void setup()
    {
      // 初始化串口
      Serial.begin(9600);
    }
    void loop() 
    {
    // 读出当前光线强度,并输出到串口显示
      int sensorValue = analogRead(A0);
      Serial.println(sensorValue);
      delay(1000);
    }
    



    2.5.4        项目:电子温度计

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    OpenJumper LM35 Module
    www.openjumper.com
    */
    
    int LM35 = A0;
    void setup() 
    {
      // 初始化串口通信
      Serial.begin(9600); 
    }
    
    void loop() 
    {
      // 读取传感器模拟值,并计算出当前温度
      float temp = (5.0 * analogRead(LM35) * 100.0) / 1024;
      // 将温度输出至串口显示
      Serial.print("temperature   " );                       
      Serial.print(temp);           
      Serial.println("C");   
      delay(1000);                     
    }
    




    2.6        与计算机交流——串口的使用

    kittenblock中小学创客名师推荐的图形化编程软件

    
    int counter=0; // 计数器
    
    void setup() {
    //初始化串口
      Serial.begin(9600);
    }
    
    void loop() {
    //每loop循环一次,计数器变量加1
    counter = counter+1;
    // 输出变量
    Serial.print(counter);
    // 输出字符
    Serial.print(‘:’);
    // 输出字符串;
    Serial.println("Hellow World");
    delay(1000);
    }
    


    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    奋斗
    2016-12-28 13:31
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2014-1-21 09:40 | 显示全部楼层
      抢占位置,免得你们下载去了,没我的了。

    该用户从未签到

    发表于 2014-1-22 12:14 | 显示全部楼层
    好例子,多看看实例
  • TA的每日心情
    奋斗
    2017-6-29 22:54
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    发表于 2014-1-23 08:41 | 显示全部楼层
    不错的例子!

    该用户从未签到

    发表于 2014-1-24 10:14 | 显示全部楼层
    楼主没有提供全书下载地址么?

    点评

    该书不提供下载,2月底各大电商平台会有售  详情 回复 发表于 2014-1-24 12:22
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2014-1-24 12:22 | 显示全部楼层
    机器人小西 发表于 2014-1-24 10:14
    楼主没有提供全书下载地址么?

    该书不提供下载,2月底各大电商平台会有售
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2016-1-3 11:25
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2014-1-26 17:22 | 显示全部楼层
    等待书的到来,配合书做做一些有趣的实验
  • TA的每日心情
    擦汗
    2016-9-28 00:10
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2014-1-28 11:13 | 显示全部楼层
    .。。
    期待更好玩的。。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    博哥零基础教你玩转ESP8266(十三) ESP8266WiFiGeneric库
    博哥零基础教你玩转ESP826
    帖子导航帖 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ)
    求助!WeMos D1 WiFi怎么
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ) 想用WeMos D1 WiFi接收服务器的数据然
    串口发送16进制指令求助
    串口发送16进制指令求助
    我准备串口发出16进制指令到我的外置设备 代码如下图 我分别监控ARDUINO的tx口和USB口
    一文教你选择Arduino开发板,小白进
    一文教你选择Arduino开发
    笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
    大神们!1602显示屏上的MQ2浓度示数不是实时监测的何解
    大神们!1602显示屏上的MQ
    本人小白,刚刚接触arduino,长时间的查阅资料后,通过复制修改代码接线实现了DHT11实
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表