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.
Arduino součástky:
1 x Infiduino Uno R3 Mainboard + 1 x USB cable(0.5m length)
1 x Mini Breadboard
1x HC-SR04 Ultrasonic Sensor
1 x Passive Buzzer 5V
1 x SG90 Servo motor
Propojovací drátky
Kód:
#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;
}
Hra „Simon říká“ realizovaná pomocí Arduina je skvělým projektem, jehož cílem je spojit zábavu s učením a rozvojem technických dovedností. Hráč se snaží zapamatovat a správně zopakovat sekvenci světelných nebo zvukových signálů, čímž si trénuje paměť, koncentraci a rychlé reakce.
Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy.