Arduino-detektor čiary

Slúži na detekciu čiary pozdĺž ktorej chodí autíčko- kategória linefollower v robotických súťažiach . Inak detekuje prítomnosť objektu blízko detektoru. Okrem detektoru a Arduina potrebujeme Ledku a 100 ohmový odpor. Zapojenie vyzerá takto:

Zdroj: arduinopoint.com

Keď senzor detekuje objekt tak sa rozsvieti Ledka. Program vyzerá takto:

int SenzorPin = 2;
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(SenzorPin, INPUT);
}
void loop() {
int hodnota = digitalRead(SenzorPin);
delay(100);
if (hodnota==LOW){
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW); 
}
}

Keď senzor zdetekuje objekt tak vyšle na pin 2 (Senzorpin) hodnotu 0 voltov- LOW a program vďaka podmienke vyšle na pin 13 hodnotu 5 voltov -HIGH (ledPin). Inak sa do ledky pošle 0 voltov – LOW. V robotických súťažiach sa namiesto ledky spustí motor podľa toho či senzor zistil alebo nezistil prítomnosť čiary.

Arduino-akcelerometer, gyroskop, teplomer

Modul nazvaný LSM6D3 za pár centov z Číny je akcelerometer, gyroskop a teplomer v jednom.

Na zapojenie potrebujeme samotný modul , Arduino a pár káblikov. Zapojenie vyzerá takto:

Na správne fungovanie programu potrebujeme stiahnuť a nainštalovať knižnicu  SparkFun_LSM6DS3  do počítača. Najprv stiahnite knižnicu na stránke  https://github.com/sparkfun/SparkFun_LSM6DS3_Arduino_Library  (kliknite na Clone or download a potom na Dowload ZIP). V programe Arduino IDE choďte do ponuky Projekt-Zahrnúť knižnice-Pridať ZIP. knižnicu ,vyberte priečinok so stiahnutou knižnicou a stlačte tlačidlo Open.

Program vyzerá takto:

 #include "SparkFunLSM6DS3.h"
 #include "Wire.h"
 #include "SPI.h"
 LSM6DS3 myIMU; 
 void setup() {
 Serial.begin(9600);
 delay(1000);
 myIMU.begin(); 
 } 
 void loop()
 {
 Serial.print("\nAkcelerometer:\n");
 Serial.print(" X = ");
 Serial.print(myIMU.readFloatAccelX(), 4);
 Serial.print(" Y = ");
 Serial.print(myIMU.readFloatAccelY(), 4);
 Serial.print(" Z = ");
 Serial.println(myIMU.readFloatAccelZ(), 4);
 Serial.print("\nGyroskop:\n");
 Serial.print(" X = ");
 Serial.print(myIMU.readFloatGyroX(), 4);
 Serial.print(" Y = ");
 Serial.print(myIMU.readFloatGyroY(), 4);
 Serial.print(" Z = ");
 Serial.println(myIMU.readFloatGyroZ(), 4);
 Serial.print("\nTeplomer:\n");
 Serial.print(" Degrees C = ");
 Serial.println(myIMU.readTempC(), 4);
 Serial.print(" Degrees F = ");
 Serial.println(myIMU.readTempF(), 4);
 delay(1000);
 }

Po nahratí programu do Arduina v Arduino IDE kliknite na monitor sériového portu v hornom pravom rohu:

Na monitore sa budú každú sekundu zobrazovať údaje z modulu. Keby sa vám zobrazované údaje nezdali berte na vedomie ,že pri testoch zariadenia sa zistilo, že zobrazovanie údajov z akcelerometra a gyroskopa je vzájomne prehodené. Vo vašom prípade to môže ale nemusí byť tiež tak.

ARDUINO -PROJEKTY

Všetky návody na tejto stránke sa dajú použiť na tvorbu projektov a to ich zlúčením do jedného programu a jedného zapojenia. Náplň projektu je limitovaný len vašou fantáziou, rozsah možností je ohromný – od obyčajných počitadiel prístupov do miestnosti po sofistikovaných robotov.

Tu si teraz môžete pozrieť jeden príklad takého zlúčenia návodov:

Meranie vzdialenosti so zobrazením na displeji

Na vytvorenie tohto projektu potrebujeme zlúčiť 2 návody – merač vzdialenosti a displeje (konkrétne 16×2 číslicový displej). Tie sú k dispozícii na našej stránke.

Zlúčenie programov z týchto návodov je vcelku jednoduché. Z obidvoch programov vytvoríme nový takto(červeným obdĺžnikom vyznačené miesta prepíšeme vyznačeným textom):

Výber z programu na merač vzdialenosti

Výber z programu na displej

Nový program potom vyzerá takto:

float trvanie, vzdialenost;
  #include <Wire.h> 
  #include <LiquidCrystal_I2C.h>
  LiquidCrystal_I2C lcd(0x3F, 16, 2);
  void setup() {
    pinMode(11, OUTPUT);
    pinMode(12, INPUT);
    Serial.begin(9600);
    lcd.begin();
    lcd.backlight();
  }
  void loop() {
    digitalWrite(11, LOW);
    delayMicroseconds(2);
    digitalWrite(11, HIGH);
    delayMicroseconds(10);
    digitalWrite(11, LOW);
    trvanie = pulseIn(12, HIGH);
    vzdialenost = (trvanie*.0343)/2;
    Serial.print("Vzdialenost: ");
    Serial.println(vzdialenost);
    delay(100);
    lcd.setCursor(0, 0); 
    lcd.print("Vzdialenost:"); 
    lcd.setCursor(0, 1); 
    lcd.print(vzdialenost);
    delay(500);
 }

Zlúčenie zapojení z týchto návodov je tiež jednoduché. Z obidvoch zapojení vytvoríme nové takto:

Obidve zapojenia pred zlúčením:

Po zlúčení:

Teraz stačí už len nahrať kód do Arduina a vyskúšať funkčnosť projektu.

Arduino-pohybový senzor

Využitelný na detekciu pohybu v stráženom priestore. Na ukážkové zapojenie potrebujeme Arduino, pohybový senzor, LEDku, nepájivé pole a pár káblikov.

Zapojenie vyzerá takto:

Zdroj: randomnerdtutorials.com

Ak program nefunguje skúste prehodiť červený a čierny káblik medzi sebou. Senzor detekuje pohyb s asi 2 sekundovým zdržaním.

Program vyzerá takto:

int a = 0;   
 void setup() {
   pinMode(13, OUTPUT);     
   pinMode(2, INPUT); 
 }
 void loop(){
   a = digitalRead(2);  
   if (a == HIGH) {         
     digitalWrite(13, HIGH);   
     delay(100);               
     }
   if (a == LOW) {
     digitalWrite(13, LOW); 
     delay(100);                
     }
 }

Keď na pin 2 príde zo senzoru 5 voltov tak bol detekovaný pohyb, príkaz digitalRead to načíta ako logickú 1ku (HIGH) a uloží do premennej A. Ak je v premennej A hodnota HIGH zapne sa LEDku inak je vypnutá.

Arduino-infračervený senzor

Slúži na ovládanie robotov, autíčok a podobných zariadení pomocou diaľkového ovládača k televízoru.

Na zapojenie potrebujeme Arduino, infračervený senzor a kedže ideme spúštať pomocou diaľkového ovládača LEDku potrebujeme aj 1 LEDku, 100ohmový odpor, nepájivé pole a pár káblikov.

Zapojenie vyzerá takto:

Zdroj: fritzing.com

A program vyzerá takto:

#include <IRremote.h>
const int RECV_PIN = 11;
 IRrecv irrecv(RECV_PIN);
 decode_results results;
 void setup(){
   Serial.begin(9600);
   irrecv.enableIRIn();
   pinMode(9,OUTPUT);
 }
 void loop(){
   if (irrecv.decode(&results)){
         Serial.println(results.value, HEX);
   if (results.value==0x123456){
   digitalWrite(9,HIGH);
   }
   if (results.value==0x654321){ 
   digitalWrite(9,LOW);
   }
         irrecv.resume();
   }
 }

Na správne fungovanie programu potrebujeme stiahnuť a nainštalovať knižnicu IRremote do počítača. Najprv stiahnite knižnicu na stránke https://github.com/z3t0/Arduino-IRremote (kliknite na Clone or download a potom na Dowload ZIP). V programe Arduino IDE choďte do ponuky Projekt-Zahrnúť knižnice-Pridať ZIP. knižnicu ,vyberte priečinok so stiahnutou knižnicou a stlačte tlačidlo Open.

Po nahratí programu do Arduina zoberte ľubovoľný funkčný ovládač od televízora alebo dataprojektoru, v Arduino IDE kliknite na monitor sériového portu v hornom pravom rohu:

Potom kliknite na tlačidlo na ovládači , ktorým chcete zapnúť LEDku. Zobrazí sa kód tlačidla ktoré ste stlačili. Skopírujte ho do programu na miesto kde je 123456 (časť 0x nemazať). Rovnakým spôsobom si vyberte a skopírujte kód tlačidla ,ktorým chcete vypnúť LEDku do programu na miesto kde je 654321 (časť 0x nemazať) . Občas je potrebné stlačiť tlačidlo viackrát lebo keď zle namierite ovládačom na senzor tak sa vypíše kód 0XFFFFFFFF .

Jednoduchou úpravou programu a zapojenia je možné takto ovládať rôzne komponenty.