|
本帖最后由 bonnieyuan 于 2013-10-18 12:27 编辑
本人arduino小白一个,编程也是很烂。但是最近要做的东西里要用到它,很着急啊,大神们帮帮忙吧~
谢啦谢啦!
希望大神们耐心看完,给个意见,感激啊!
我要做的是个计时系统,像下面这个图一样。
有个L形的水箱,两端各放一对感应器。水箱中有一个小机器人,从红色盘子里捡起东西,再放到两端。红色盘子里共16个东西,两端最后应各放8个,放的先后顺序无所谓。计算完成整个过程的时间。
系统的设计思路如下:
1.按下“开始”键,感应器开始准备;
2.机器人第一次被感应器感应到,开始计时;
3.当最后一粒物体被捡起来时,按下“READY”键;
4.之后机器人再次被感应到时,停止计时,并将计时结果显示在LCD上。
用到的东西有:
lcd,两对感应器,还有两个控制按钮,还缺什么帮忙补充下哈。。[mw_shl_code=c,true]
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
// when characters arrive over the serial port
if ( Serial.available())
{
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0)
{
// display each character to the LCD
lcd.write(Serial.read());
}
}
unsigned long start, finished, elapsed;
int sensorPin= 8;
int val= 0;
void setup()
{
Serial.begin(9600);
pinMode(2, INPUT); // the start button
pinMode(3, INPUT); // the ready button
Serial.println("ress 1 for Start/reset, 2 for elapsed time");
}
void displayResult()
{
float h, m, s, ms;
unsigned long over;
elapsed = finished - start;
h = int(elapsed / 3600000);
over = elapsed % 3600000;
m = int(over / 60000);
over = over % 60000;
s = int(over / 1000);
ms = over % 1000;
Serial.print("Elapsed time: ");
Serial.print(h, 0);
Serial.print(": ");
Serial.print(m, 0);
Serial.print(": ");
Serial.print(s, 0);
Serial.print(": ");
Serial.print(ms, 0);
Serial.println();
}
void loop()
{
if (digitalRead(2) == HIGH)
{
if(val=digitalRead(sensorPin))
{
start = millis();
delay(200); // for debounce
Serial.println("Started...");
}
}
if (digitalRead(3) == HIGH)
{
if (val=digitalRead(sensorPin))
{
// digitalWrite(ledpin,!val);
//delay(10);
finished = millis();
delay(200); // for debounce
displayResult();
}
}
}
[/mw_shl_code]
我之前学的一点点编程全部又还回去了,大概凑出来的是这样,可是显示是有问题,怎样改,大神们给看看嘛~
|
-
水箱
|