Automatisk navigering Robot med Gas (MQ-2), temperatur & fuktighet (DHT11) sensorer (8 / 12 steg)

Steg 8: Koden



De bibliotek som behövs för denna kod ska fungera är:

  1. dht.h bibliotek för modulen DHT11.
  2. LiquidCrystal_I2C.h bibliotek för att kontrollera LCD med hjälp av I2C-modul.
  3. Servo.h bibliotek för kontroll av Servo
  4. AFMotor.h bibliotek för användning av L293D Motor sköld
  5. Wire.h biblioteket som tillåter kommunikation med I2C moduler
  6. LCD.h bibliotek för allmänna LCD användningen.

Koden: (Obs Lägg < > runt #include bibliotekets E.G #include dht.h bör #include eller istället ladda ner den bifogade filen heter "FinalAutoNavBotCode.ino" tack: D)

#include dht.h

DHT DHT;

#include LiquidCrystal_I2C.h

#include Servo.h

#include AFMotor.h

#include Wire.h

#include LCD.h

berättar arduino vad varje pin användning är ansluten till
#define trigPin 13
#define echoPin 12
#define servoMainPin 10
#define BACKLIGHT_PIN 7
#define LED_ON 1
#define DHT11_PIN 5 < /p >< p > Servo servoMain; Definiera våra Servo
AF_DCMotor motor2 (2, MOTOR12_64KHZ). skapa motor #2, 64KHz pwm
AF_DCMotor motor1 (1, MOTOR12_64KHZ); skapa motor #1, 64KHz pwm
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positiv); Addr, sv, Rw, Rs, d4, d5, d6, d7, backlighpin, polaritet
int jag = 0;
int state = 0;

void setup() //Sets varje definierad pin som indata eller utdata så att arduino vad som väntar på varje pin
{
Serial.BEGIN(9600); Ställ in följetong bibliotek på 9600 bps
servoMain.attach(servoMainPin); servo på digital stift 10
pinMode (trigPin, produktionen); Unltrasonic utgång
pinMode (echoPin, ingång); Ultraljuds-ingång
motor2.setSpeed(200); ställa in hastigheten till 200
motor1.setSpeed(200); ställa in hastigheten till 200
LCD.BEGIN (16,4); initiera lcd
lcd.setBacklight(LED_ON); Slå på bakgrundsbelysningen
State = 0;
Delay(2000); vänta 2 sekunder
}

Ping-funktion för att få avståndet från HC-SR04

osignerade långa ping()
{
Utlösa uSonic sensorn (HC-SR04) att skicka ut en ping
lång varaktighet, avstånd; Inledande sträcka åtgärd
digitalWrite (trigPin, låg); Lagt till denna rad
delayMicroseconds(1); Lagt till denna rad
digitalWrite (trigPin, hög); delayMicroseconds(1000); -Tagit bort denna rad
delayMicroseconds(1); Lagt till denna rad
digitalWrite (trigPin, låg);
längd = pulseIn (echoPin, hög);
avståndet = (längd/2) / 29,1;
Delay(100);
ClearLCD();
avkastning (avstånd);
}

Framåt Fuction anger motors gå vidare

void forward()
{
Serial.println("forward");
motor2.setSpeed(200); ställa in hastigheten till 200
motor1.setSpeed(200); ställa in hastigheten till 200
motor2.Run(forward); framöver
motor1.Run(forward); framöver
Delay(200);
botstopF();
}

Rätt funktion anger motorer för rätt

void right()
{
Serial.println("Right");
motor2.setSpeed(200); ställa in hastigheten till 200
motor1.setSpeed(200); ställa in hastigheten till 200
motor2.Run(Backward); gå bakåt
motor1.Run(forward); framöver
Delay(200);
botstopR();
}

Vänster funktion anger motorer för vänster

void left()
{
Serial.println("left");
motor2.setSpeed(200); ställa in hastigheten till 200
motor1.setSpeed(200); ställa in hastigheten till 200
motor2.Run(forward); framöver
motor1.Run(Backward); gå bakåt
Delay(200);
botstopL();
}

Tillbaka funktionen ställer in motorer går bakåt

void back()
{
Serial.println("back");
motor2.setSpeed(200); ställa in hastigheten till 200
motor1.setSpeed(200); ställa in hastigheten till 200
motor2.Run(Backward); gå bakåt
motor1.Run(Backward); gå bakåt
Delay(100);
botstopB();
}

Funktionen används för att stoppa motorer när framöver

void botstopF()
{
motor2.setSpeed(0); ställa in hastigheten till 200
motor1.setSpeed(0); ställa in hastigheten till 200
motor2.Run(forward); framöver
motor1.Run(forward); framöver
Delay(100);
}

Funktionen används för att stoppa motorer när man går bakåt, på grund av problem med allmänna stopp

void botstopB()
{
motor2.setSpeed(0); ställa in hastigheten till 200
motor1.setSpeed(0); ställa in hastigheten till 200
motor2.Run(Backward); framöver
motor1.Run(Backward); framöver
Delay(100);
}

Tydliga LCD-displayen

void clearlcd()
{
LCD.Clear();
LCD.Home();
}

Funktionen att samla DHT11 sensordata för temp, returnerar läsning

osignerade långa DHTTemp()
{
int chk = DHT.read11(DHT11_PIN);
Serial.println ("Temparature");
Serial.println (DHT.temperature, 1);
Return (DHT.temperature);
}

Funktionen att samla DHT11 sensordata för humi, returnerar läsning

osignerade långa DHTHum()
{
int chk = DHT.read11(DHT11_PIN);
Serial.println ("luftfuktighet");
Serial.println (DHT.humidity, 1);
Return (DHT.humidity);
}

Funktionen att samla in data från MQ-2 sensor, konverterar till spänning returnerar konverterade värdet som flöte

float MQ2()
{
float sensor_volt;
float sensorValue;
sensorValue = analogRead(A0);
sensor_volt = sensorValue/1024 * 5.0;
Serial.println ("MQ-2 Volt:");
Serial.println(sensor_volt);
Return (sensor_volt);
}

void loop()
{

Long int forwdis, leftdis, rightdis, temp, hum;
float gas.

Används för att ansluta bluetooth-enhet via bluetooth-modul
IF(Serial.available() > 0)
{
State = Serial.read();
Serial.Print ("jag fick:");
Serial.println(State);
Delay(10);
}

När bluetooth-anslutning skickar 0 i denna stat som är själv navigering
om (statligt == '0')
{
gas = MQ2(); Kör MQ2 funktion sparar värdet i gas
lcd.setCursor(6,1);
LCD.Print("gas:"); Visa gas på LCD-skärm
LCD.Print(gas); Skriver ut gas

Temp = DHTTemp(); Kör DHTTemp funktion sparar värdet i temp
lcd.setCursor(6,2);
LCD.Print("Temp:"); Visar temp på LCD-skärmen visar
LCD.Print(temp); Tryck temp

hum = DHTHum(); Kör DHTHum funktion spara värdet i hum
lcd.setCursor(16,2);
LCD.Print("Humi:"); Visar hum på LCD
LCD.Print(hum); Utskrifter Hum

servoMain.write(90); Centrum Servo
Delay(150);
forwdis = ping(); Kör Ping fucntion reurns avstånd sparar som framåt avstånd
Serial.println (forwdis); Skriva ut framåt avstånd

i ++;
om (jag == 8) / / används som LCD-skärmen skulle ibland bryta, detta kunde rensa det fastställande problem kommenterar ut om inga problem
{
ClearLCD();
Jag = 0;
}

om (forwdis > = 12) //If framåt dis är större än 12 cm håll framöver
{
Forward();
ClearLCD();
lcd.setCursor(7,0);
LCD.Print("forward"); Visningsriktningen för movment
lcd.setCursor(12,4);
LCD.Print(forwdis); Skriva ut avståndet i cm
LCD.Print("cm");
}

annat om (forwdis < 12) //If avståndet är mindre än 12 cm sedan
{
Back();

Titta vänster och hamna på avstånd
servoMain.write(165);
Delay(150);
leftdis = ping();
Serial.println (leftdis);

Ser rätt och få rätt avstånd
servoMain.write(15);
Delay(150);
rightdis = ping();
Serial.println (rightdis);

Återställa servo centrum hårstrån
servoMain.write(90);
Delay(150);

Om vänster avståndet är mer än rätt då gå vänster

om (leftdis > rightdis)
{
ClearLCD();
lcd.setCursor(7,0);
LCD.Print("left"); Visningsriktningen för movment
lcd.setCursor(13,4);
LCD.Print(leftdis); Skriva ut avståndet i cm
Left();

}

Om rätt avstånd är större än vänster avstånd går rätt

annars om (rightdis > leftdis)
{
ClearLCD();
lcd.setCursor(7,0);
LCD.Print("Right"); Visningsriktningen för movment
lcd.setCursor(13,4);
LCD.Print(rightdis); Skriva ut avståndet i cm
Right();

}

Om varje är samma går bakåt och tydliga LCD
annat if (rightdis == leftdis)
{
ClearLCD();
Back();
}
}
}

Om Bluetooth-anslutning skickar ändra 1 status i inaktivt läge i detta läge motors paus medan sensorer fortfarande läsa

annars om (statligt == '1') / / om 1 framlänges
{
motor2.Run(release);
motor1.Run(release);

ClearLCD();
lcd.setCursor(7,0);
LCD.Print("Idle"); Visningsriktningen för movment
Serial.println ("inaktiv");

gas = MQ2();
lcd.setCursor(6,1);
LCD.Print("gas:");
LCD.Print(gas);

Temp = DHTTemp();
lcd.setCursor(6,2);
LCD.Print("Temp:");
LCD.Print(temp);

hum = DHTHum();
lcd.setCursor(16,2);
LCD.Print("Humi:");
LCD.Print(hum);

motor2.Run(release);
motor1.Run(release);
Delay(1000);

}

}

Se Steg
Relaterade Ämnen

ESP8266-12 blynk Trådlös temperatur, fuktighet DHT22 sensor

i detta projekt med en esp8266, att Visa temperaturen och luftfuktigheten DHT22 sensor på din smartphone eller datorplatta.DHT22 sensor är mycket mer exakt än DHT11 men är också dyrare.men om du kan bara använda DHT11ESP8266-12 blynk Trådlös temperat...

Automatisk FAN vidare med hjälp av Arduino och DHT11

Hej allaDetta är mitt första inlägg på Instructables, och eftersom jag lär mig mycket här, jag beslutat att bidra med en av mina erfarenheter med hjälp av Arduino, sensorer och motorer. Jag inte har skapat något nytt; Jag bara ta några tutorials och...

Styra din Robot med hjälp av mobiltelefon

Denna hela handledning är också tillgänglig på min hemsidaHej kommer världen i detta inlägg jag att visa dig hur man styr roboten med hjälp av mobiltelefon. Styr en robot med hjälp av mobiltelefon är inte så komplicerat som ditt tänkande det är mycke...

Skapandet av en vandrande robot med polycaprolactone

Video på hur jag skapade en vandrande robot med polycaprolactone. Polycaprolactone är en intressant plast, så att du snabbt skapa prototyper. Det smälte vid 60-65 ° C. För smältning av polycaprolactone, använde jag varmt vatten och lödning varm luftp...

Enkla självbalanserande Robot med Galileo Gen 2

Efter volontärarbete på den lokala mini Maker Faire, och att få en chans att spela med Intel Galileo Gen 2 Arduino styrelsen, var jag motiverad att hitta ett maker projekt för mig själv. Efter en snabb undersökning av alternativen och mina intressen...

Smart Robot med Vision och röst kontroll

Hur man gör en intelligent robot med datorseende, röststyrning, röst-syntes och mer, med din Android-telefon!Steg 1: delarHårdvara1. en Android-telefon som stöder OTG med Android KitKat eller senare installerat. De flesta moderna telefoner stödjer OT...

Kontrollera en Roomba robot med Arduino och Android

(Om du gillar detta Instructable, glöm inte att rösta på den - ovan: högra hörnet flaggan. Det tävlar på AUTOMATION tävling. Tack så mycket! ;-)Som en av robotteknik tävling 2016 vinnarna här på Instructables fick jag som pris en iRobot Roomba Create...

A Följ mig robot med enkel krets

Dess en mycket enkel och lätt att göra följa mig robot. Det kan känna närvaron av objekt som skall följas med hjälp av infraröd (IR) sensor. Det finns en IR-Led och två IR fotodiod (med tillbaka IR-Filter). När IR får speglas från ett närliggande obj...

Billiga 4WD invända att undvika Robot med fyra IR närhet sensorer...

Detta är en billig grundläggande fyra motorer, fyra sensorer, programmerbara 8051 objekt att undvika robot med breadboad. Denna robot kan också användas som en linje efter robot bara ändra programmet. Jag installerade två batterier för mer makt, men...

Bygga din Internet kontrollerad Video-Streaming Robot med Arduino och Raspberry Pi

< the Instructable och koden är redo. Njut! Lämna en kommentar med du feedback! >Jag är (aka LiquidCrystalDisplay / Itay), en 14 år gammal student från Israel lärande i Max Shein Junior High School för avancerad vetenskap och matematik. Jag gör dett...

Lägga till Internet-kontroll i Raspberry Pi Robot med Runmyrobot.com

Hur dela din Robot med världen och låta andra människor spela med den med runmyrobot.com. Denna webbplats beta-testning men det bör fungera. Om du har några frågor, låt oss veta genom att publicera på webbplatsen Disqus sida.BTW, måste du ansluta din...

2-wheel Self Balancing Robot med hjälp av Arduino och MPU6050

2-Wheel Self Balancing Robot med hjälp av Arduino och MPU6050.Använda Arduino som controller och sensor MPU6050 för att styra balansen. Bara lägga till en enkel seriell Bluetooth-modul och använda en Bluetooth Serial Controller APP för Android-telefo...

Automatisk karuselldörr med Mediatek Linkit en

Du har någonsin undrat U kan göra en automatisk karuselldörr med berömda Mediatek Linkit en styrelse! I detta Instructable kommer jag visa dig en prototyp av The dörren Just med The Magic av servomotorer, IR-sensorn och The styrelser... Kan börja...S...

Autonoma Sumo bekämpa Robot med pneumatiska Flipper - hur man

denna Sumo Bot utformad, byggdes, programmerad och testade under en 12 veckors period för en av mitt sista år engineering klasser. Syftet var att konstruera och bygga en lätt helt självständiga sumo kämpar robot för en i klassen Sumo Bot konkurrens....

Grundläggande raden efter Robot med Arduino

09/07/2015Det har varit några år eftersom vi Ursprungligen postat denna grundläggande linje följande Robot med Arduino handledning, och det verkar så många människor tyckte att det bra att vi ska skicka en uppdatering som löper nuvarande Arduino bibl...

Labyrint Problemlösaren Robot, med artificiell intelligens med Arduino

(Om du gillar detta Instructable, glöm inte att rösta på det (ovan: högra hörnet flaggan). Rex, roboten tävlar på ROBOTICS och sensorer tävlingar. Tack så mycket! ;-)Detta Instructable utvecklades på mitt senaste projekt: rad efterföljare Robot - PID...

Bygga en Robot med Perler pärlor

Inte du hatar när en rubrik lovar du något som författaren inte kan leverera senare? Jag antar att jag är skyldig till att. Naturligtvis bygga du inte en robot med perler pärlor. Men du kan bygga något som ser ut som en robot. Så här går vi:Steg 1: V...

Avlägsen kontrollerade robot med mobila video inspelningen

hiiiii killar! Detta är min första instructable... idag iam kommeratt Visa u hur man gör en avlägsen kontrollerade robot med kamera (mobila videoinspelning)så följ stegen...STEG-1:material som behövs:1) 3 inriktad motors (två för hantering och andra...

Styra din Robot med en Wii Nunchuck (och en Arduino)

efter bär själv spela Wii boxning jag måste tänka vore det inte bra om jag kunde använda detta för att styra min robot, (ser att min vänstra hand).Titta runt på internet hittade jag en uppsjö av människor som gör liknande saker, (länkar till alla bar...