查看: 78184|回复: 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 | 显示全部楼层
    .。。
    期待更好玩的。。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    全过程展示:PWM自定义、测速、PID调速、PID自整定
    全过程展示:PWM自定义、
    arduino如何控制带驱动28步进电机
    arduino如何控制带驱动28
    有大佬知道吗,arduino不知道能不能发出脉冲信号
    Wifiduino(esp8266)+blinker+微信消息推送
    Wifiduino(esp8266)+bli
    最近呢,有个很小的项目 需要反馈现场电源工作状态,着急开发,没时间做方案。我又是
    因为DHT11是假的吗?
    因为DHT11是假的吗?
    用DHT11测温湿度时,监视窗口总是这样显示,这是为什么啊,求大佬告知!
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表