Reakčná hra pre dvoch hráčov – Arduino Uno
Reakčná hra pre dvoch hráčov na arduino UNO.
Model lokátoru se skládá z echo senzoru umístěném na desce, která se za pomocí servomotorku. Pokud senzor zjistí předmět v definované vzdálenosti zastaví se na 1 sekundu a oznámí to zvukem z buzzeru a pak nadále pokračuje v pohybu. Pohyb je definován jako kyvadlový – o 180 doprava/doleva a zpět ve smyčce.
Lokátor je složen ze základních Arduino součástek umístěných na konstrukci sestavené ze stavebnice Merkur.
Jedná se o projekt pro začátečníky.
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int servoPin = 9;
int trigPin = 11; //Trig - green Jumper
int echoPin = 12; //Echo - yellow Jumper
int speakerPin = 4;
//setup:
int alarmDistanceinCm = 30;//cm
int pauseIfDistance = 2000; // ms
void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(speakerPin, OUTPUT);
myservo.attach(servoPin); // attaches the servo on pin 9 to the servo object
}
void loop()
{
int i=0;
int servoPosition = 0;
digitalWrite(speakerPin,LOW);
//clock direction movements:
for (i=0;i<180;i++) {
ProcessEachServoStep(i);
}
//counter clock direction movements:
for (i=180;i>=0;i--) {
ProcessEachServoStep(i);
}
}
void ProcessEachServoStep(int i) {
int distance=0;
distance= GetDistanceCm();
Serial.println(distance);
if (distance<alarmDistanceinCm) {
ProcessAlarm();
}
myservo.write(i);
delay(20);
}
void ProcessAlarm() {
//Code for alarm, e.g. buzzer:
tone(4,500);
delay(pauseIfDistance);
Serial.println("ALARM");
noTone(4);
}
int GetDistanceCm() {
//method return distance from sensor in cm:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
long duration = pulseIn(echoPin, HIGH);
// convert the time into a distance
int cm = (duration/2) / 29.1;
return cm;
}
Reakčná hra pre dvoch hráčov na arduino UNO.
Po prvních pokusech s moduly CC1101 433.92Mhz jsem se po čase rozhodl si vyzkoušet napsat program na jednoduché ovládání led diody tak aby jeden modul pravidelně vysílal hodnoty které se na druhém modulu vyhodnotí a tento pak bude pravidelně blikat led diodou. Po tomto programu a jeho odzkoušení jsem se rozhodl si napsat další program na zjištění číselných hodnot tlačítek na dálkovém ovladači pro bezdrátové zásuvky 433Mhz, a tyto pak ovládat dalším napsaným programem na zapínání a vypínání zásuvky. Pro ovládání jsem použil Arduino Nano které jsem pro testování osadil do Arduino IO shieldu, pro komunikaci mezi Arduino a modulem CC1101 jsem použit 8 – kanálový obousměrný převodník logických úrovní (5V – 3.3V) a pro napájení celé sestavy jsem použil vyrobený napájecí zdroj s výstupním napětím 8V pro napájení Arduino Nano, 5V a 3.3V pro napájení převodníku a modulu CC1101. Uvedené přípravky rozšiřují zapojení uveřejněná v [1].