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;
}
Tento projekt umožňuje měřit teplotu pomocí senzoru DS18B20, zobrazit ji na I2C LCD displeji, a ovládat relé podle teplotních limitů. Relé bude aktivní, když je teplota mezi 0 a 22 stupni Celsia. Projekt může sloužit k ovládání topení, ventilace nebo jiného zařízení podle okolní teploty.