Ultrasonický lokátor s Merkurem

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;
}

 Krátké video

Další podobné články

Saimon říká:

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.

ROBOTICKÉ RAMENO

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.