找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1411|回复: 0
收起左侧

Arduino串口控制led程序

[复制链接]
ID:455632 发表于 2018-12-26 16:57 | 显示全部楼层 |阅读模式
  1. #include <TimerOne.h>
  2. volatile int i=1 ;
  3. volatile int state=LOW ;
  4. void setup() {
  5.   pinMode(5, OUTPUT);
  6.   pinMode(6, OUTPUT);
  7. attachInterrupt(0,light,LOW);
  8. Timer1.initialize(1000000); //单位微秒,中断时间为1秒
  9. Timer1.attachInterrupt( timerIsr ); //开启定时中断,中断时执行timerIsr函数
  10. }

  11. void loop() {
  12.   
  13. }
  14. void light()
  15. {i=-i;//按钮切换哪个灯执行timerIsr函数
  16. switch(i){
  17.   case -1:
  18. digitalWrite(5, LOW);
  19.   timerIsr();

  20.   break;
  21.   case 1:
  22.   digitalWrite(6, LOW);
  23.   timerIsr();

  24. break;
  25. default:
  26. digitalWrite(5,LOW);
  27. digitalWrite(6, LOW);
  28. break;
  29. }
  30. }
  31. void timerIsr()//对某个灯执行闪烁

  32. {
  33. state = ! state;
  34. if(i==1)
  35. {
  36. digitalWrite(5, state);
  37. }
  38. Else
  39. {
  40. digitalWrite(6, state);
  41. }
  42.   
  43. }
复制代码

  1. const int greenPin = 5;
  2. const int bluePin = 6;
  3. const int redPin = 7;//定义针脚
  4. void setup() {
  5.   Serial.begin(9600);
  6. pinMode(greenPin, OUTPUT);
  7. pinMode(bluePin, OUTPUT);
  8. pinMode(redPin, OUTPUT);

  9. }
  10. void loop() {
  11. while (Serial.available() > 0) {

  12. int green = Serial.parseInt();
  13. int blue = Serial.parseInt();
  14. int red = Serial.parseInt();
  15. Serial.println(green);
  16. Serial.println(blue);
  17. Serial.println(red);

  18. int g = 4 + green;
  19. int b = 4 + blue;
  20. int r = 4 + red;
  21. digitalWrite(g,HIGH); //依次点亮的灯的号码
  22. delay(2000);
  23. digitalWrite(g,LOW);
  24. digitalWrite(b,HIGH);
  25. delay(2000);
  26. digitalWrite(b,LOW);
  27. digitalWrite(r,HIGH);
  28. delay(2000);
  29. digitalWrite(r,LOW);
  30. }
  31. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表