完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
LiquidCrystal lcd(13, 12, 7, 4, 1, 0); int IR1= A3; int IR2= A2; int IR3= A1; int IR4= A0; int IN1=5; int IN2=6; int IN3=8; int IN4=10; int ENA=11; int ENB=9; int temp=0; int l,c,r,t,m; int count1 = 0; int count2 = 0; float rpm1 = 0; float rpm2 = 0; float rpm = 0; float val = 0; int pin1 = 3; int pin2 = 2; unsigned long time1 = 0, old_time = 0; unsigned long time2 = 0,time3 = 0; void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode(pin1,INPUT); pinMode(pin2,INPUT); attachInterrupt (0 ,Code1,FALLING); attachInterrupt (1 ,Code2,FALLING); } void cesu() { time1 = millis(); if (abs(time1 - old_time)>= 1000) { detachInterrupt(0); detachInterrupt(1); rpm1 = (float)count1*60/20; rpm2 = (float)count2*60/20; rpm = (float)(rpm1+rpm2)/2; val = (float)(rpm*65*3.14/60000); Serial.println(val); count1 = 0; count2 = 0; old_time = millis(); attachInterrupt(0,Code1,FALLING); attachInterrupt(1,Code2 ,FALLING); }} void Code1 () { if ((millis()-time2)>5) { count1 += 1; time2 == millis(); }} void Code2 () { if ((millis()-time3)>5) { count2 += 1; time3 == millis(); }} void loop() { analogWrite(ENA,85); analogWrite(ENB,80); digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); cesu(); IR1 = digitalRead(A3);//l IR2 = digitalRead(A2);//c IR3 = digitalRead(A1);//r IR4 = digitalRead(A0);//m if ( IR1 == 1| (IR1 ==1 && IR2 ==1) ) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Leftturn"); lcd.setCursor(0,1); lcd.print("Speed="); lcd.setCursor(6,1); lcd.write(Serial.read()); delay(50); } else { if(IR4 == 1 | (IR4 == 1 && IR3 ==1)) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Righttturn"); lcd.setCursor(0,1); lcd.print("Speed="); lcd.setCursor(6,1); lcd.print(Serial.read()); delay(50); } if(IR3 ==1 | IR2 ==1) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Forward"); lcd.setCursor(0,1); lcd.print("Speed="); lcd.setCursor(6,1); lcd.print(Serial.read()); delay(50); } }} |
|
相关推荐
6个回答
|
|
LCD显示乱码,求大神相助。
|
|
|
|
用示例程序重定义端口,测试下硬件,先保证连接正确,再调试输件。
|
|
|
|
用示例代码修改,估计工作模式什么的 哪儿设置不正确
|
|
|
|
无论是Arduino还是什么的,只要支持C,还是喜欢自己编点放进去,好改易移植、
|
|
|
|
无论是Arduino还是什么的,只要支持C,还是喜欢自己编点放进去,好改易移植、
|
|
|
|
这个玩艺延时最关键
|
|
|
|
只有小组成员才能发言,加入小组>>
WIO Terminal +MCP2515 实现车辆OBD的速度监控
10360 浏览 0 评论
60659 浏览 77 评论
5955 浏览 3 评论
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
36025 浏览 219 评论
10023 浏览 0 评论
484浏览 1评论
请教:esp32中用u8g2显示shtc3传感器数据到i2c液晶屏,显示不稳定的问题
1237浏览 1评论
1383浏览 1评论
597浏览 0评论
715浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:28 , Processed in 0.686208 second(s), Total 91, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号