-
2021-09-02 17:44:20
一、初次整理【20210902】
下述经验基于 老版本1.8x的IDE(最新版2.x IDE已经包含了debug单步调试的功能)
1.两个串口通信的引脚最好不要当作普通IO使用,在编写大型应用时使用它方便调试。
2.动作执行时长越长的程序,所需的验证时间越长。开发此类项目时应预先留有足够的调试时间。
3.想到了就继续补充……
二、测试步骤【20220115】
1.逐个传感器(部件)单项测试:测试传感器本身是否正常工作;调试调用传感器的代码是否正常。
2.全部传感器(部件)整体测试:测试全部传感器在线时是否相互干扰;相关代码是否相互干扰。
3.正式组装过程中单项测试:验证组装是否正确,是否存在错误操作损坏传感器,及时发现。
4.正式组装结束后整体测试:验证整体组装是否正确,排除硬件故障的可能,便于后续开发。
5.局部功能调试测试:针对某个功能编写代码后,调试相关传感器验证局部功能是否正常。
6.全部功能完全测试:测试系统整体功能是否正常;逐个输入点暴力测试排除隐蔽缺陷。
更多相关内容 -
基于Arduino项目设计&Arduino编程学习例程&安卓开发资料(包含源代码&原理图&入门教程&开发指南等)
2022-05-03 21:39:255)基于Arduino平台的物联网设计实验共20例 6)Arduino编程从零开始&开发实战指南&学习笔记总结 7)基于Arduino智能节水灌溉设计(包含原理图及源程序) 8)Arduino UNO R3主控板AD版电路设计(原理图、PCB源文件) ... -
Arduino--项目:Arduino草图代码和Fritzing图的项目中心
2021-02-06 11:53:50Arduino--项目:Arduino草图代码和Fritzing图的项目中心 -
Arduino项目实战——基于Arduino【智能垃圾桶】设计
2020-07-01 14:25:41Arduino项目实战——基于Arduino【智能垃圾桶】设计 第一次接触Arduino是在大一的时候,距离现在已经五年,当时一个简单的“电子琴”项目就让我抓耳挠腮,根本不具备“面向百度编程”能力的我,用老师提供的文档跟...Arduino项目实战
—基于Arduino【智能垃圾桶】设计
第一次接触Arduino是在大一的时候,距离现在已经五年,当时一个简单的“电子琴”项目就让我抓耳挠腮,根本不具备“面向百度编程”能力的我,用老师提供的文档跟我的组员用了好几天,才让Arduino跟蜂鸣器想起 一首简单版的《小星星》。当时内心的喜悦以及在舍友面前装X的沙雕模样仿佛还在昨日。
因为Arduino容易入门,而且能让初学者快速体验到单片机开发的乐趣,因此用一个小栏目分享一些以前在学校里面做过的小项目,这个项目是智能垃圾桶的初级版本,后续还会用4G通信模组或者Wifi模块(Esp8266/Esp32)等远程控制的中级版本。完全可以完成一个好的课程设计甚至毕业设计。
Arduino之旅的初次见面,感谢批评指正,一起进步!
一、硬件准备
- Arduino UNO
- HC-SR04超声波模块
- SG90舵机
- 杜邦线若干
- 电源
二、接线方式
三、代码解析
#include <Servo.h> //servo库 Servo servo; //创建舵机对象来控制舵机 int trigPin = 5; int echoPin = 6; int servoPin = 7; int led= 10; long duration, dist, average; long aver[3]; //array for average void setup() { //初始化串口通信以及连接SR04的引脚 Serial.begin(9600); servo.attach(servoPin);//把连接在引脚7上的舵机赋予舵机对其控制 pinMode(trigPin, OUTPUT); //要检测引脚上输入的脉冲宽度,需要先设置为输入状态 pinMode(echoPin, INPUT); servo.write(0); //close cap on power on delay(500) servo.detach(); } void measure() { digitalWrite(10,HIGH); digitalWrite(trigPin, HIGH); //产生一个10us的高脉冲去触发TrigPin delayMicroseconds(2); digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); dist = (duration/2) / 10; //obtain distance 检测脉冲宽度并测算出距离 } void loop() { for (int i=0;i<=2;i++) { //average distance measure(); aver[i]=dist; delay(10); //delay between measurements } dist=(aver[0]+aver[1]+aver[2])/3; if ( dist<50 ) { //Change distance as per your need servo.attach(servoPin); delay(1); servo.write(0); delay(3000); servo.write(150); delay(1000); servo.detach(); } Serial.print(dist); }
四、效果演示:
-
Arduino 小项目 (欢迎机器)
2021-11-23 13:31:03Arduino 小项目 (欢迎机器) 写在前面 这个项目怎么说呢,就是arduino的小作业,功能自我有一点鸡肋,不过大家混作业的时候还是可以用一用 说正经的 设计一个放在商店门口欢迎客人的小东西,可以显示环境光值,客...Arduino 小项目 (欢迎机器)
写在前面
这个项目怎么说呢,就是arduino的小作业,功能自我有一点鸡肋,不过大家混作业的时候还是可以用一用说正经的
设计一个放在商店门口欢迎客人的小东西,可以显示环境光值,客流量,同时配置了相关的音乐以及灯光展示。主要功能
超声波测距模块用来检测客流量。当顾客距离门口小于10cm时,蜂鸣器会发出声响提醒客人到来,LCD显示屏上的number数值加1,并且主机会向从机发送数据1,让所有和从机相连的LED灯闪烁(即LED灯样式1);其中,当number数值变为10的倍数时,抽取该位顾客为幸运儿,LCD显示屏上Y的数值加1。
若得知商店内某顾客当天生日,可通过按键1进行播放生日快乐歌,并且主机向从机发送数据2,让所有和从机相连的LED灯按样式2 的代码执行。
一般情况下,店员也可以通过按键2和按键3控制两只老虎和小星星的播放,以及各自对应的LED灯样式。代码
因为我们要用蜂鸣器播放音乐,所有需要现在主机函数里面加一个pitches.h文件。
添加方式即是打开arduino软件界面,点击右上角的倒三角(▼)图标,点击新建标签,或者直接Ctrl+Shift+N,会出现下面这个界面
在框内输入pitches.h,点击回车,然后将下面这一段代码复制到里面#define NOTE_B0 31 //B0 ····7 #define NOTE_C1 33 //C1 ···1 #define NOTE_CS1 35 //C1# #define NOTE_D1 37 //D1 ···2 #define NOTE_DS1 39 //D1# #define NOTE_E1 41 //E1 ···3 #define NOTE_F1 44 //F1 ···4 #define NOTE_FS1 46 //F1# #define NOTE_G1 49 //G1 ···5 #define NOTE_GS1 52 //G1# #define NOTE_A1 55 //A1 ···6 #define NOTE_AS1 58 //A1# #define NOTE_B1 62 //B1 ···7 #define NOTE_C2 65 //C2 ··1 #define NOTE_CS2 69 //C2# #define NOTE_D2 73 //D2 ··2 #define NOTE_DS2 78 //D2# #define NOTE_E2 82 //E2 ··3 #define NOTE_F2 87 //F2 ··4 #define NOTE_FS2 93 //F2# #define NOTE_G2 98 //G2 ··5 #define NOTE_GS2 104 //G2# #define NOTE_A2 110 //A2 ··6 #define NOTE_AS2 117 //A2# #define NOTE_B2 123 //B2 ··7 #define NOTE_C3 131 //C3 ·1 #define NOTE_CS3 139 //C3# #define NOTE_D3 147 //D3 ·2 #define NOTE_DS3 156 //D3# #define NOTE_E3 165 //E3 ·3 #define NOTE_F3 175 //F3 ·4 #define NOTE_FS3 185 //F3# #define NOTE_G3 196 //G3 ·5 #define NOTE_GS3 208 //G3# #define NOTE_A3 220 //A3 ·6 #define NOTE_AS3 233 //A3# #define NOTE_B3 247 //B3 ·7 #define NOTE_C4 262 //C4 1(中央C大调) #define NOTE_CS4 277 //C4# #define NOTE_D4 294 //D4 2 #define NOTE_DS4 311 //D4# #define NOTE_E4 330 //E4 3 #define NOTE_F4 349 //F4 4 #define NOTE_FS4 370 //F4# #define NOTE_G4 392 //G4 5 #define NOTE_GS4 415 //G4# #define NOTE_A4 440 //A4 6 #define NOTE_AS4 466 //A4# #define NOTE_B4 494 //B4 7 #define NOTE_C5 523 //C5 1· #define NOTE_CS5 554 //C5# #define NOTE_D5 587 //D5 2· #define NOTE_DS5 622 //D5# #define NOTE_E5 659 //E5 3· #define NOTE_F5 698 //F5 4· #define NOTE_FS5 740 //F5# #define NOTE_G5 784 //G5 5· #define NOTE_GS5 831 //G5# #define NOTE_A5 880 //A5 6· #define NOTE_AS5 932 //A5# #define NOTE_B5 988 //B5 7· #define NOTE_C6 1047 //C6 1·· #define NOTE_CS6 1109 //C6# #define NOTE_D6 1175 //D6 2·· #define NOTE_DS6 1245 //D6# #define NOTE_E6 1319 //E6 3·· #define NOTE_F6 1397 //F6 4·· #define NOTE_FS6 1480 //F6# #define NOTE_G6 1568 //G6 5·· #define NOTE_GS6 1661 //G6# #define NOTE_A6 1760 //A6 6·· #define NOTE_AS6 1865 //A6# #define NOTE_B6 1976 //B6 7·· #define NOTE_C7 2093 //C7 1··· #define NOTE_CS7 2217 //C7# #define NOTE_D7 2349 //D7 2··· #define NOTE_DS7 2489 //D7# #define NOTE_E7 2637 //E7 3··· #define NOTE_F7 2794 //F7 4··· #define NOTE_FS7 2960 //F7# #define NOTE_G7 3136 //G7 5··· #define NOTE_GS7 3322 //G7# #define NOTE_A7 3520 //A7 6··· #define NOTE_AS7 3729 //A7# #define NOTE_B7 3951 //B7 7··· #define NOTE_C8 4186 //C8 1···· #define NOTE_CS8 4435 //C8# #define NOTE_D8 4699 //D8 2···· #define NOTE_DS8 4978 //D8#
用到的库函数有LiquidCrystal和Wire,软件没有自带的可自行进行下载,下载方式在arduino专栏—三位一体数码管那篇文章里有提到,下面是主机程序的代码,注释很全
#include "pitches.h" #include <LiquidCrystal.h> #include <Wire.h> #define Trig 4 //超声波引脚 向Trig输入一个10uS以上的高电平,可触发模块测距 #define Echo 3 //当测距结束时,Echo会输出一个高电平,电平宽度为超声波往返时间之和。 #define Buzzer 8 //蜂鸣器引脚 #define KeyPin1 5 //按键1、2、3的引脚 #define KeyPin2 6 #define KeyPin3 7 int KEY_NUM1 = 0; //按键变量赋初值 int KEY_NUM2 = 0; int KEY_NUM3 = 0; IRrecv irrecv(PIN_RECV); decode_results results; const int rs = 9, en = 10, d4 = 13, d5 = 12, d6 = 11, d7 = 2; //LCD1602的引脚设计 int vol =0; //光敏传感器OUT引脚接A0 LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //初始化LCD1602 int num = 0; //用来记录客流量的变量num int y = 0; //用来记录幸运人数的变量y int a = 1; int b = 2; int c = 3; int d = 4; int *s[] = {&a, &b, &c, &d}; //主机向从机传送数据时所用到的指针数组 //生日快乐歌对应的旋律和持续时间 int melody1[] = {NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_C5, NOTE_B4, 0,NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, 0, NOTE_G4,NOTE_G4, NOTE_G5, NOTE_E5, NOTE_C5, NOTE_B4, NOTE_A4, 0,NOTE_F5, NOTE_F5, NOTE_E5, NOTE_C5, NOTE_D5, NOTE_C5, 0,}; int noteDurations1[] = {8,8,4,4,4,4, 4, 8,8,4,4,4,4, 4, 8,8,4,4,4,4,2, 8, 8,8,4,4,4,2, 4,}; //两只老虎对应的旋律和持续时间 int melody2[]={NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_C4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_C4, NOTE_D4, NOTE_G3, NOTE_C4, 0, NOTE_D4, NOTE_G3, NOTE_C4, 0,}; int noteDurations2[]={8,8,8,8, 8,8,8,8, 8,8,4, 8,8,4, 8,8,8,8,4,4, 8,8,8,8,4,4, 4,4,4,4, 4,4,4,4,}; //小星星对应的旋律和持续时间 int melody3[] = {NOTE_C4,NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4,NOTE_G4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_D4,NOTE_D4,NOTE_C4,NOTE_G4,NOTE_G4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_D4,NOTE_G4,NOTE_G4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_D4,NOTE_C4,NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4,NOTE_G4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_D4,NOTE_D4,NOTE_C4}; int noteDurations3[] = {4, 4, 4, 4, 4, 4, 2, 4,4,4,4,4,4,2,4, 4, 4, 4, 4, 4, 2, 4,4,4,4,4,4,2,4, 4, 4, 4, 4, 4, 2, 4,4,4,4,4,4,2}; void BUZZER(){ //有顾客到来时的响声代码模块 for(int i=0;i<80;i++){ digitalWrite(Buzzer, HIGH); delay(1); digitalWrite(Buzzer, LOW); delay(1);}} void BUZZER1(){//歌曲1:生日快乐 for(int thisNote = 0; thisNote < 29; thisNote++) { int noteDuration = 1000/noteDurations1[thisNote]; tone(8, melody1[thisNote],noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); noTone(8);}} void BUZZER2(){//歌曲2:两只老虎 for(int thisNote = 0; thisNote < 29; thisNote++){ int noteDuration = 1000/noteDurations2[thisNote];//计算旋律持续时间//1秒(1000ms)除以音符类型//比如:四分音符:1000/noteDurations[thisNote],//八分音符:1000/noteDurations[thisNote]. tone(8,melody2[thisNote], noteDuration);//播放音乐 int pauseBetweenNotes = noteDuration * 1.30;//为了区别不同旋律,设置一个最小的间隔时间,一般设置为旋律持续时间的130%比较合适 delay(pauseBetweenNotes); noTone(8);}}//停止当前旋律播放 void BUZZER3(){//歌曲3:小星星 for(int thisNote = 0; thisNote < 29; thisNote++) { int noteDuration = 1000/noteDurations3[thisNote]; tone(8, melody3[thisNote],noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); noTone(8);}} void ScanKey1(){ //按键1 KEY_NUM1 = 0; //清空变量 if(digitalRead(KeyPin1) == LOW) //判断按键1是否按下 {delay(20); //防抖动 if(digitalRead(KeyPin1) == LOW){ KEY_NUM1 = 1; //改变KEY_NUM1的值 while(digitalRead(KeyPin1) == LOW);}} //等待按键松开 if(KEY_NUM1 == 1){ BUZZER1(); DataTransfer2();}} //播放歌曲1,并且向从机发送整型数据2 void ScanKey2(){ //按键2 KEY_NUM2 = 0; //清空变量 if(digitalRead(KeyPin2) == LOW) //判断按键2是否按下 {delay(20); //防抖动 if(digitalRead(KeyPin2) == LOW){ KEY_NUM2 = 1; //改变KEY_NUM2的值 while(digitalRead(KeyPin2) == LOW);}} //等待按键松开 if(KEY_NUM2 == 1){BUZZER2(); DataTransfer3(); } } //播放歌曲2,并且向从机发送整型数据3 void ScanKey3(){ //按键3 KEY_NUM3 = 0; //清空变量 if(digitalRead(KeyPin3) == LOW) //判断按键3是否按下 {delay(20); //防抖动 if(digitalRead(KeyPin3) == LOW){ KEY_NUM3 = 1; //改变KEY_NUM3的值 while(digitalRead(KeyPin3) == LOW);}} //等待按键松开 if(KEY_NUM3 == 1){BUZZER3(); DataTransfer4();}} //播放歌曲3,并且向从机发送整型数据4 void RangeFree(){ //超声波测距模块 long IntervalTime = 0; //时间变量 digitalWrite(Trig,HIGH); //向Trig输入一个15uS以上的高电平,触发模块测距 delayMicroseconds(15); digitalWrite(Trig,LOW); IntervalTime = pulseIn(Echo,HIGH); //Echo输出一个高电平,电平宽度为超声波往返时间之和,将值赋给IntervalTime float S = IntervalTime/58.00; //计算距离(cm) Serial.print("测距:"); Serial.print(S); Serial.println("cm"); if(S < 10){ //当距离小于10cm时,蜂鸣器执行BUZZER()函数,num值加1,主机向从机发送数据1;如果num值增为10的倍数,y增1 BUZZER();num++;if(num%10 == 0) y++;DataTransfer1();} else S = 0; IntervalTime = 0;} void LCD(){ //LCD显示模块 vol = analogRead(0); 读取A0的值 lcd.setCursor(0, 1); //设置光标定位到第0列,第1行(从0开始) Serial.println(vol,DEC); //串口打印环境光值 lcd.print("AmbientLight="); //显示屏显示AmbientLight= lcd.print(vol); //显示屏显示环境光值 lcd.setCursor(0, 0); //设置光标定位到第0列,第0行 lcd.print("number="); lcd.print(num); lcd.setCursor(10, 0); //设置光标定位到第10列,第0行 lcd.print("Y="); lcd.print(y); delay(200); } void DataTransfer1(){ Wire.beginTransmission(4); // 向地址位8的从机指定要传送到的主机地址 Wire.write("c = "); // 将要发送的数据加入发送队列 //发送字符串 Wire.write(*s[0]); //调用指针发送数据1 Wire.endTransmission(); // 结束发送,以使从机正常接收数据 delay(500);} void DataTransfer2(){ Wire.beginTransmission(4); // 向地址位8的从机指定要传送到的主机地址 Wire.write("c = "); // 将要发送的数据加入发送队列 //发送字符串 Wire.write(*s[1]); //调用指针发送数据2 Wire.endTransmission(); // 结束发送,以使从机正常接收数据 delay(500);} void DataTransfer3(){ Wire.beginTransmission(4); // 向地址位8的从机指定要传送到的主机地址 Wire.write("c = "); // 将要发送的数据加入发送队列 //发送字符串 Wire.write(*s[2]); //调用指针发送数据3 Wire.endTransmission(); // 结束发送,以使从机正常接收数据 delay(500);} void DataTransfer4(){ Wire.beginTransmission(4); // 向地址位8的从机指定要传送到的主机地址 Wire.write("c = "); // 将要发送的数据加入发送队列 //发送字符串 Wire.write(*s[3]); //调用指针发送数据4 Wire.endTransmission(); // 结束发送,以使从机正常接收数据 delay(500);} void setup(){ pinMode(Echo,INPUT); //Echo引脚设置为输入模式 pinMode(Trig,OUTPUT); Serial.begin(9600); //串口初始化 pinMode(Buzzer,OUTPUT); pinMode(KeyPin1,INPUT_PULLUP); //按键引脚设置为输入上拉模式 pinMode(KeyPin2,INPUT_PULLUP); pinMode(KeyPin3,INPUT_PULLUP); pinMode(13,OUTPUT); pinMode(0,OUTPUT); lcd.begin(16, 2); //设置LCD要显示的列数、行数,即2行16列 Wire.begin(); //作为主机加到IIC总线} void loop(){ RangeFree(); ScanKey1(); ScanKey2(); ScanKey3(); LCD(); delay(500);}
至此主机的程序填写完毕
下面看一下从机程序,从机需要做的就是接收从主机发来的数据,然后控制相对应的LE灯程序进行执行
#include<Wire.h> #define LED1 2 //定义12个LED灯引脚 #define LED2 3 #define LED3 4 #define LED4 5 #define LED5 6 #define LED6 7 #define LED7 8 #define LED8 9 #define LED9 10 #define LED10 11 #define LED11 12 #define LED12 13 int t=0; //IIC通信用到的标志位 void setup(){ for(int i=2;i<14;i++) pinMode(i,OUTPUT); //初始化端口 Wire.begin(4); //作为从机加入IIC总线,从机地址为4 Wire.onReceive(receiveEvent); //注册一个IIC事件 Serial.begin(9600); // 初始化串口 } void sty1(){ //12个LED灯同时闪烁 for(int i=2;i<14;i++) digitalWrite(i,HIGH); delay(200); for(int i=13;i>1;i--) digitalWrite(i,LOW); delay(200); } void sty2(){ //LED5 6 7 8亮,然后1 2 3 4亮;然后1 2 3 4灭,5 6 7 8灭;最后中心的9、10、11、12亮灭 for(int i=2;i<6;i++) {digitalWrite(i+4,HIGH); delay(200);} for(int i=2;i<6;i++) {digitalWrite(i,HIGH); delay(200);} for(int i=10;i<14;i++) {digitalWrite(i,HIGH); delay(200);} for(int i=13;i>9;i--) {digitalWrite(i,LOW); delay(200);} for(int i=9;i>5;i--) {digitalWrite(i-4,LOW); delay(200);} for(int i=9;i>5;i--) {digitalWrite(i,LOW); delay(200);} for(int i=9;i<14;i++) {digitalWrite(i,HIGH); delay(200);} for(int i=13;i>8;i--) {digitalWrite(i,LOW); delay(200);} } void sty3(){ //首先LED1 5 9亮;然后1 5 9灭的同时,3、4 7、8 11、12亮;最后3、4 7、8 11、12灭的同时,2 6 10亮 digitalWrite(2,HIGH); delay(200); digitalWrite(6,HIGH); delay(200); digitalWrite(10,HIGH); delay(200); digitalWrite(10,LOW); digitalWrite(4,HIGH); digitalWrite(5,HIGH); delay(200); digitalWrite(6,LOW); digitalWrite(8,HIGH); digitalWrite(9,HIGH); delay(200); digitalWrite(2,LOW); digitalWrite(12,HIGH); digitalWrite(13,HIGH); delay(200); digitalWrite(3,HIGH); delay(200); digitalWrite(7,HIGH); delay(200); digitalWrite(11,HIGH); delay(200); digitalWrite(11,LOW); delay(200); digitalWrite(7,LOW); delay(200); digitalWrite(3,LOW); delay(200); } void sty4(){ //样式4:从外围向中心亮,再从中心向外围灭 for(int i=2;i<6;i++) digitalWrite(i,HIGH); delay(200); for(int i=2;i<6;i++) digitalWrite(i+4,HIGH); delay(200); for(int i=2;i<6;i++) digitalWrite(i+8,HIGH); delay(200); for(int i=13;i>9;i--) digitalWrite(i,LOW); delay(200); for(int i=13;i>9;i--) digitalWrite(i-4,LOW); delay(200); for(int i=13;i>9;i--) digitalWrite(i-8,LOW); delay(200); } void loop(){ if(t==1) sty1(); //t值对应的LED流水灯样式 if(t==2) sty2(); if(t==3) sty3(); if(t==4) sty4(); delay(200); } void receiveEvent(int howMany){当主机发送的数据被收到时,将触发receiveEvent()事件 while(1<Wire.available()) { //循环读取收到的数据,最后一个数据单独接收 char c=Wire.read(); //以字符形式接收数据 Serial.print(c);} // 串口输出该字符 int x= Wire.read(); //以整形形式接收数据 Serial.println(x); //串口输出改整型变量 if(x == 1) t=1; //读取x的值,更改对应的t值 if(x == 2) t=2; if(x == 3) t=3; if(x == 4) t=4;}
所谓的LED灯样式大家可以自行更改,给大家看一下我当时的LED灯分布图
写在最后
说一下我在做这个简单的项目是踩到的坑,其实严格意义上来说也不是坑,只能说是我这个新手会犯的错误
① 红外遥控和蜂鸣器的定时器冲突
②从机接收数据时,不可以在从机的receiveEvent()中写入过多的代码,如果想让其执行某些代码块,可通过标志位的设置将执行代码的过程转移到loop函数。 -
完美图解Arduino互动设计入门
2018-08-16 16:58:18《完美图解Arduino互动设计入门》配有一些实际的制作项目,具有较高的实用价值。另外,《完美图解Arduino互动设计入门》在讲述基本电子电路和程序设计概念时,精心制作了大量的手绘图,让读者能够很快地理解这些概念... -
arduino项目制学习
2019-01-27 11:34:42arduino项目制学习,创客从简到难,项目制学习,高清晰版 -
10个很棒的Arduino初学者项目-项目开发
2021-03-30 22:14:24面向初学者的简单但有趣的DIY arduino项目列表。 -
Arduino基础项目篇-基于Arduino的智能小车
2022-07-03 19:47:49我刚入门Arudino时,做的第一个项目,就是Arduino智能小车,做出来的小车具有红外避障,蓝牙控制,超声波避障,循迹等动能做出来的最终样子是类似这样的1.四个小车轮子2.四个直流减速电机3.两节18650锂电池,大概...从这篇开始,后续会陆陆续续写一些自己入门单片机以来做过的一些项目教程,y由于不是现在做的,所以我可能没有调试的照片啥之类的,而且做的东西大多都拆了。
我刚入门Arudino时,做的第一个项目,就是Arduino智能小车,做出来的小车具有红外避障,蓝牙控制,超声波避障,循迹等动能
做出来的最终样子是类似这样的
材料准备
1.四个小车轮子
2.四个直流减速电机
3.两节18650锂电池,大概电压在7.4V左右,电压最好不要超过12V不然会损坏电机驱动
4.电池盒,给电池充电
5.L298N电机驱动
6.Arduino UNO 单片机
7.一个蓝牙模块
8.两个红外避障模块
9.一个超声波模块(也可以整个舵机云台,不过,我没整)
10.两个红外循迹模块
链接我就不弄上了,淘宝上一搜就可以
动手制作
买好材料后,大概一二百块钱,材料到了后,就可以动手制作了
由于动手制作的教程一般网上都有,可以参考下这个博主的帖子,讲的很详细(79条消息) Arduino智能小车——拼装篇_不懂音乐的欣赏者的博客-CSDN博客_arduino小车
这里大致说几点注意事项吧!
1.电源线接线时,不要接反,不然模块会直接废掉。 VCC接VCC,GND接GND,模块io口接Arduino对应引脚就可以
2.注意L298N电机驱动的接线,可以参考这个博主的讲解,电机驱动器-L298N模块介绍 - 知乎 (zhihu.com)
引用下这个博主上面的图片
标题 接线时: 18650电池正极接主电源正极,负极接主电源负极 ,
通道A,通道B,用来接四个电机的电机线
如果不是PWM控制,就不需要拔掉A相使能端子和B相使能端子
输入1,2,3,4,用来接引脚,控制电机转动
3.电机线,尽量焊接一下,不然不牢固,容易造成小车轮子不转动(当时排查了,好久才发现的)
-
Arduino项目:迷你Arduino项目
2021-02-10 17:35:34Arduino项目 专案 集成开发环境 版本: 1.8.5 参考 专案 电路设计 -
Arduino单片机(三).Arduino UNO系列的简单项目
2021-03-24 22:43:56} 7、Arduino与Processing交互实验 7.1 实验介绍 Processing是一门开源编程语言和与之配套的的集成开发环境(IDE)的名称,其在电子艺术和视觉设计社区被用来教授编程基础,并运用与大量的新媒体和互动艺术作品中。... -
Arduino学习资料Arduino程序设计基础PPT.zip
2021-12-25 17:42:41Arduino学习资料Arduino程序设计基础PPT: 第一章 初识Arduino.pptx 第七章 串口的使用.pptx 第三章 Arduino语言.pptx 第九章 脉冲宽度测量函数.pptx 第二十一章 制作电子时钟.pptx 第二十二章 USB库的使用.pptx 第... -
Arduino基础项目三:制作交通信号灯
2021-11-21 18:48:42一、所需元 1 × DFduino UNO R3(以及配套USB...//项目三: 制作交通信号灯 int carRed = 12; //设置汽车灯 int carYellow = 11; int carGreen = 10; int button = 9; //按钮引脚 int pedRed = 8; //设置行人灯 i. -
基于Arduino开发环境的智能家居系统设计.pdf
2021-07-15 14:28:02基于Arduino开发环境的智能家居系统设计.pdf -
我的arduino项目汇总
2021-05-27 08:19:23indexarduino1. 温控风扇参考文章:...参考文章:代码python1.参考文章:代码 arduino 1. 温控风扇 参考文章:https://blog.csdn.net/acktomas/article/details/116128584 代码 // inclu -
Arduino项目开发经验谈
2012-01-01 23:59:53该文档讲述arduino开发项目的过程,对于认识和应用arduino很有帮助 -
Arduino小项目设计(蜂鸣器与呼吸流水灯结合,以及led点阵)
2019-11-13 16:46:44这还是在禹州那边弄的,应该是在10月8日的时候,怀念一下当初的设计。 我们的蜂鸣器弄的音乐是自己在乐谱上扣的,如果想要学习请点击以下, 学习怎样Arduino蜂鸣器演奏音乐 目录 1.led8*8点阵 2.这是我们的蜂鸣... -
Arduino基础项目七:制作温度报警器
2021-11-22 23:01:23一、项目说明 当温度到达我们设定的限定值时,报警器就会响。这样一个功能可以用于厨房温度检测报警以及室内温度过高报警等各种需要检测温度的场合。 这里需要讲解一个知识点——传感器。这是一种能感知周围环境... -
IoTMyAdmin:用于数据上传和表示的Web应用程序。 用于数据上传的Arduino项目
2021-05-21 12:43:51它是专门为Arduino项目设计的,但是可以通过简单的HTTP请求从不同的设备,其他网站或脚本上载数据。 数据上传代码位于网络中,并且会针对每台设备自动生成。 此外,IoT MyAdmin拥有一些工具,可以使用不同类型的... -
基于Arduino开发板设计的机器人完整电路方案-电路方案
2021-04-20 05:53:42当然,它与Arduino Uno板没有什么不同,但是它更有用,因为它不需要另一个屏蔽来驱动电机!它没有跳线杂乱,并且可以使用CH340G轻松编程。在驱动两个直流电动机时,还可以通过在此板上使用I / O引脚来控制不同的... -
Arduino程序设计PPT.zip
2021-05-10 16:19:59适合ADUINO入门学习的PPT -
brailleConversion:Arduino 项目的盲文转换
2021-07-02 19:59:49盲文转换 ================== 对于 Capstone Arduino 项目 在这个项目中,我正在设计由盲文打印机实现的英文到盲文转换软件。 编辑:由于Eclipse和arduino之间的通讯明显不如python的串口通讯,代码改成了python。 -
基于项目式教学的Arduino程序设计课程教学改革.pdf
2021-12-04 16:21:11基于项目式教学的Arduino程序设计课程教学改革.pdf -
Mini 身材 Arduino 机器键盘设计(原理图、主要代码)-电路方案
2021-04-21 18:48:57可能感兴趣的项目设计: 开源智能设备—真正的无线机械键盘,OLED显示屏 (资料下载链接:https://www.cirmall.com/circuit/5338/detail?3) 机械键盘概述: 机械键盘,全键无冲,全背光。Mini身材,高度逼格。同时兼容... -
基于Arduino设计的直流电压表,原理图、源码-电路方案
2021-04-19 17:35:06采用通用组件和易于理解的代码进行设计,可以在单个电路或3个独立电路的3个节点上同时测量正电压和负电压。 在2个不同的电路上测量电阻和电池两端的电压: 硬件 以下硬件用于构建此设备:- Arduino Uno:在ATmega328P微... -
ARDUINO:arduino传感器硬件项目
2021-03-21 05:23:43笔记 大多数代码都使用LCD i2C数据显示器显示输出 -
基于Arduino单片机项目的C语言程序设计教学.pdf
2021-07-12 19:47:54基于Arduino单片机项目的C语言程序设计教学.pdf -
Arduino项目开发 Arduino通过蓝牙与pc机通信.doc
2022-07-06 17:12:37Arduino项目开发 Arduino通过蓝牙与pc机通信.doc Arduino项目开发 Arduino通过蓝牙与pc机通信.doc Arduino项目开发 Arduino通过蓝牙与pc机通信.doc Arduino项目开发 Arduino通过蓝牙与pc机通信.doc Arduino项目开发 ... -
带Arduino的数码管|| 使用Opto最简单的设计-项目开发
2021-03-30 23:07:01该项目将展示如何仅通过Arduino和光电耦合器芯片显示NIXIE管 -
基于Arduino nano设计的无接触洗手液机器-电路方案
2021-04-20 00:32:093D设计程序 Ultimaker库拉 手动工具和制造机: 3D打印机(通用) 烙铁(通用) 钢锯(通用) 在过去的几个月中,COVID-19大流行在世界各地蔓延。有无数的感染和不幸的人员伤亡。世界卫生组织建议的最重要措施之一是用...