Katsed 7

#define ECHO_PIN 8

#define TRIG_PIN 7

void setup() {

  pinMode(ECHO_PIN, INPUT);

  pinMode(TRIG_PIN, OUTPUT);

  Serial.begin(960);

}

void loop() {

  Serial.println(measure()); 

}

int measure()

{

  digitalWrite(TRIG_PIN,HIGH);

  digitalWrite(TRIG_PIN,LOW);

  int distance=pulseIn(ECHO_PIN, HIGH,15000)/50;

  return constrain(distance,1,300);

}
#define ECHO_PIN 8

#define TRIG_PIN 7

void setup() {

  pinMode(ECHO_PIN, INPUT);

  pinMode(TRIG_PIN, OUTPUT);

  Serial.begin(960);

}

void loop() {

  digitalWrite(TRIG_PIN,HIGH);

  digitalWrite(TRIG_PIN,LOW);

  int distance=pulseIn(ECHO_PIN, HIGH)/50;

  Serial.println(distance);

}

Ülesanne 7.1 Rahakarp või Prügikast

https://www.tinkercad.com/things/ht0VyEyaulj-ingenious-migelo/editel?sharecode=sIcQfSz5CxY_jS7x70fYhkYoLmwb2KDhNSXJJvMpIRo

#define ECHO_PIN 8
#include <Servo.h>
#define TRIG_PIN 7
const int ledPin = 13;
Servo servo1;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
servo1.attach(9);
pinMode(ECHO_PIN, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG_PIN, HIGH);
  int distance = measureDistance();
  distanceFr(distance);
  digitalWrite(TRIG_PIN, LOW);
  delay(500);
}

int measureDistance() {
  unsigned long duration;
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  duration = pulseIn(ECHO_PIN, HIGH);
  int distance = duration * 0.034 / 2;
  return distance;
}

void distanceFr(int distance) {
  if (distance > 4 && distance < 40) {
    servo1.write(0);
    digitalWrite(ledPin, HIGH);
    delay(1000);
    servo1.write(100);
    delay(1000);
    lcd.setCursor(1, 0);
  lcd.print("HAVE A NICE DAY");
    delay(2000);
    lcd.clear();
    
  } else {
    servo1.write(0);
    digitalWrite(ledPin, LOW);
  }
}

Oli kasutatud:
juhtmed 23 tk
arduino uno R3 1 tk
arendusplaat 1tk
kaugusandur 1tk
potentsial 1 tk
takisti 2tk
led 1tk
lcd ecran 1tk

Töö kirjeldus:

Seadistamise funktsioonis (setup) initsialiseeritakse LCD-ekraan, servomootor ja pindade olekud. LCD-ekraanil on 16 veergu ja 2 rida. Servomootor on ühendatud digitaalpinnale 9. ECHO_PIN ja TRIG_PIN seatakse vastavalt sissetulekuks (INPUT) ja väljundiks (OUTPUT). Lisaks avatakse seerialühendus kiirusega 9600 baudi. Põhiloopis (loop) saadetakse ultrahelisignaal. Kõigepealt pannakse TRIG_PIN kõrgele, et saata ultrahelisignaal. Seejärel mõõdetakse kaugust meetodi measureDistance abil ja saadud kaugus saadetakse meetodisse distanceFr. Seejärel pannakse TRIG_PIN madalale ja oodatakse 500 millisekundit. meetod measureDistance mõõdab ultrahelisignaali vastuvõtuks kuluvat aega. Kõigepealt seatakse TRIG_PIN madalale, oodatakse 2 mikrosekundit ja seejärel pannakse TRIG_PIN kõrgele 10 mikrosekundiks. Seejärel pannakse TRIG_PIN jälle madalale. PulseIn funktsioon mõõdab aega, mis kulub ECHO_PIN-i kõrgele olekule minekuks. Selle aja põhjal arvutatakse kaugus, kuna ultrahelilaine levib umbes 34 cm/ms. Mõõdetud kaugus tagastatakse. meetodis distanceFr juhitakse servomootorit ja LED-i vastavalt mõõdetud kaugusele. Kui kaugus on vahemikus 4 kuni 40 cm, liigutatakse servomootorit ja lülitatakse LED sisse. Seejärel oodatakse 1 sekund, liigutatakse servomootorit teise asendisse ja kuvatakse LCD-ekraanile sõnum “HAVE A NICE DAY” 2 sekundiks. Seejärel tühjendatakse ekraan. Kui kaugus ei ole antud vahemikus, liigutatakse servomootorit nullasendisse ja LED välja.