luna 发表于 2019-5-29 18:11:54

Arduino“反应计时器” - 我的孩子喜欢玩这个

这个项目开机很快 – 只需按下按钮即可。简单而有趣。我们一家都喜欢玩这个游戏。

该项目需要使用硬件清单LED(通用)*2SparkFun按钮开关12mm * 2DFRobot I2C 16x2 Arduino LCD显示模块滑动开关10kΩ电阻电池座,3 x AAAArduino Micro和Genuino Micro手动工具和制造设备烙铁(通用)

故事我上网时在某个网址发现了这些代码并尝试运行。我们一家都喜欢这个游戏,所以我决定将它组装到一个好玩的盒子里面以便能够常玩。这项工作目前已经完成,并且我将它送到我的孩子手中。这是非常基础的项目,但是却包含了所有的重要元素。 这里有一些照片:

我将整个系统缩小到通过一片atmega328p芯片进行编程。以3 AAA的模式运行。

这是它的外观。那个大的是一个按钮,点击小红色顶部即可“开始”。
按下开始运行


代码:#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#define btnSTART 5

#define btnHIT 7

#define ledTrigger 9

LiquidCrystal_I2C lcd(0x23,20,4);



void setup() {

lcd.init();

lcd.backlight();

pinMode(btnSTART, INPUT_PULLUP);

pinMode(btnHIT, INPUT_PULLUP);

pinMode(ledTrigger, OUTPUT);

digitalWrite(ledTrigger, LOW);

lcd.print("Salut Famille!");

delay(2000);

lcd.clear();

randomSeed(analogRead(0));

}



void loop() {

long timeReaction;

long timeTotal = 0;

lcd.print("Press START!");

while (digitalRead(btnSTART)) {}

delay(10);

while (!digitalRead(btnSTART)) {}

lcd.clear();

lcd.print("Jouez!!!");

delay(1000);

for (int i = 0; i < 5; i++) {

    delay(random(500, 5000));

    timeReaction = millis();

    digitalWrite(ledTrigger, HIGH);

    while (digitalRead(btnHIT)) {}

    timeReaction = millis() - timeReaction;

    timeTotal += timeReaction;

    delay(10);

    while (!digitalRead(btnHIT)) {}

    digitalWrite(ledTrigger, LOW);

    lcd.clear();

    lcd.print(i + 1);

    lcd.print(": ");

    lcd.print(timeReaction);

    delay(1000);

}

lcd.clear();

lcd.print("Moyenne = ");

lcd.print(timeTotal/5);

delay(10000);

lcd.clear();

}

Credits

原文翻译转载自:https://www.dfrobot.com/blog-1247.html

gada888 发表于 2019-5-31 06:50:25

有趣,研究一下
页: [1]
查看完整版本: Arduino“反应计时器” - 我的孩子喜欢玩这个