(med Video) Grundläggande Arduino Robot, ljus sökare! (4 / 8 steg)

Steg 4: Införliva ljussensorer del 2




Efter vifta med händerna framför ljussensorer och titta på dem värdeförändring, du kommer att märka när ljussensorn känner mindre ljus sensorn värde kommer att stiga, och när den upptäcker mer ljus, sensorn värde kommer att sjunka. Detta beror på att sensorn minskar i motstånd när den upptäcker ett starkt ljus. När det finns mindre motstånd till över det LDR två leder, att det analoga ingångsstiftet börja läsa en marken signal, eller något som liknar det. När den LDR får mindre ljus, motståndet mot marken ökar och mer el kommer att tillfalla analogt pin från pullup motstånd som är kopplad till + 5v.

Av personlig preferens lik jag till har analogRead() fungera tillbaka 0(min) om ljussensorn är mörk, och 1023(max) om den upptäcker starkt ljus. Vi kan lösa detta problem med hjälp av programvara. Det finns inga förändringar i kretsen.

På denna del av koden:

SensorLeft = analogRead(LeftSensor);
Delay(1);

Vi kan lägga till:

SensorLeft = 1023 - analogRead(LeftSensor);
Delay(1);

Detta dras automatiskt oavsett värde analogRead() returneras av 1023 (som är max värdet den kan returnera.)
Detta sätt, kommer det att Invertera vad någonsin värde analogRead() avkastning.
Till exempel, om analogRead() värde är x

x = 0
Sensor värde = 1023 - x
Sensor värde = 1023-0
Sensor värde = 1023

x = 1023
Sensor värde = 1023 - x
Sensor värde = 1023-1023
Sensor värde = 0

Denna metod kan användas för att Invertera valfritt värde, så länge du vet det högsta värdet som returneras.
Till exempel, om en sensor returnerar maximalt 255:
Val = 255 - sensor värde

Ladda upp denna kod till Arduino styrelsen och prov den ute.

Kopiera koden från och med nu:

/****************************************************************************************************************
-Program för att läsa två LDRs
* skapade av: Anuj
* (c) copyright
*
*
* Fysiska installationen:
* Två LDRs ansluten till marken och Analog pin 1(Right) och Analog pin 2(left)
*
*
******************************************************************************************************************/
Med hjälp av Arduino Duemilinove

PIN definitioner - fäster en variabel till en PIN-kod.
CONST int RightMotor = 2; Detta stift används för att aktivera eller inaktivera rätt motor. Ansluten till basen av en NPN-transistor.
CONST int LeftMotor = 3; Detta stift används för att aktivera eller inaktivera vänstra motorn. Ansluten till basen av en NPN-transistor.
CONST int RightSensor = 1; Detta stift används för att läsa värdet för rätt sensorn.
CONST int LeftSensor = 2; Detta stift används för att läsa värdet på vänster sensorn.

Varierande definitioner

int SensorLeft; Detta lagrar värdet för vänster givarstaven att använda senare i skissen
int SensorRight; Här lagras värdet av rätt givarstaven att använda senare i skissen

metoden setup() körs när när programmet körs. När den
Arduino återställs, setup() kommer att genomföras en gång.

void setup() {

pinMode (LeftSensor, indata); Definierar detta stift som indata. Arduino läser värden från detta stift.
pinMode (RightSensor, indata); Definierar detta stift som indata. Arduino läser värden från detta stift.
digitalWrite (A1, hög); Gör en inre pullup motstånd
digitalWrite (A2, hög); Gör en inre pullup motstånd
Serial.BEGIN(9600); Kan en seriell anslutning via Arduino till antingen USB eller UART (stift 0 & 1). Observera att överföringshastigheten är inställd 9600
Serial.println ("\nReading ljussensorer."); Placeras i slutet av void Setup() så att det körs en gång, precis innan den ogiltiga Loop()
}

metoden loop() körs om och om igen,
så länge Arduino har makt

void loop() {
SensorLeft = analogRead(LeftSensor); Detta läser värdet i sensorn och sedan sparar den till motsvarande heltal.
Delay(1); fördröjningen kan den Analog till Digital omvandlaren IC att återhämta sig inför nästa behandlingen.
SensorRight = analogRead(RightSensor); Detta läser värdet i sensorn och sedan sparar den till motsvarande heltal.
Delay(1); fördröjningen kan den Analog till Digital omvandlaren IC att återhämta sig inför nästa behandlingen.

Detta avsnitt av skiss används för att skriva ut värdena i de
sensorer via seriell till datorn. Användbart för att bestämma
om sensorerna arbetar och om koden också fungerar.
Detta kallas felsökning.

Serial.Print ("vänster Sensor ="); Skriver ut texten i citat.
Serial.Print(SensorLeft); Skriver ut värdet på vänster sensorn.
Serial.Print("\t"); Skriver ut en flik (mellanslag).
Serial.Print ("rätt Sensor ="); Skriver ut texten i citat.
Serial.Print(SensorRight); Skriver ut värdet av rätt sensorn.
Serial.Print("\n"); Skriver ut en ny rad efter alla nödvändiga data visas.
}

Kopiera inte något utöver denna punkt.

Nu har vi till sensorer du använder med vår robot, men vi är inte riktigt klar ännu. Vi behöver ett sätt att jämföra dessa värden. Använder bara dessa värden, kan vi avgöra om en sensor läser en större eller mindre värde än andra sensorn, eller om de är exakt samma.

Nu, på grund av många andra faktorer såsom mindre avvikelser från LDR tillverkning, jitter, EMI, etc, värdena för ljussensorn kommer sällan vara exakt samma. Så istället kan vi använda ett annat heltal för att avgöra om de är ungefär samma. Vi kan uppnå detta med hjälp av beräkning av skillnaden mellan två ljussensorer. Vi kan dra av värdet av en sensor av värdet av andra sensorn och sedan hitta det absoluta värdet av sensorn. Detta returnerar differensen mellan två sensorer och vi kan använda som omedelbart, eller spara den på ett annat heltal, så att vi kan använda den mer än en gång. Det slutliga värdet kan användas för att avgöra om sensorerna läser två distinkta värden eller om de är något liknande. Ju högre värde, desto högre skillnaden. Använda en if sats, kan jag säga, om de sensorer värdena ligger inom 100 steg om varandra, gör detta.

om (SensorDifference < = 100) {
Utföra detta.
}

Åker snålskjuts av vår föregående kod som bör fortfarande vara igång på Arduino styrelsen,
Vi kan använda de två heltal som innehåller värdet av sensorerna till calculcate skillnaden och spara den på en ny heltal.

Den nya koden ser ut så här. Förändringarna är i fetstil.

/****************************************************************************************************************
-Program för att läsa två LDRs
* skapade av: Anuj
* (c) copyright
*
*
* Fysiska installationen:
* Två LDRs ansluten till marken och Analog pin 1(Right) och Analog pin 2(left)
*
*
******************************************************************************************************************/
Med hjälp av Arduino Duemilinove

PIN definitioner - fäster en variabel till en PIN-kod.
CONST int RightMotor = 2; Detta stift används för att aktivera eller inaktivera rätt motor. Ansluten till basen av en NPN-transistor.
CONST int LeftMotor = 3; Detta stift används för att aktivera eller inaktivera vänstra motorn. Ansluten till basen av en NPN-transistor.
CONST int RightSensor = 1; Detta stift används för att läsa värdet för rätt sensorn.
CONST int LeftSensor = 2; Detta stift används för att läsa värdet på vänster sensorn.

Varierande definitioner

int SensorLeft; Detta lagrar värdet för vänster givarstaven att använda senare i skissen
int SensorRight; Här lagras värdet av rätt givarstaven att använda senare i skissen
int SensorDifference; / / det här värdet används för att avgöra skillnaden mellan vänster och höger

metoden setup() körs när när programmet körs. När den
Arduino återställs, setup() kommer att genomföras en gång.

void setup() {

pinMode (LeftSensor, indata); Definierar detta stift som indata. Arduino läser värden från detta stift.
pinMode (RightSensor, indata); Definierar detta stift som indata. Arduino läser värden från detta stift.
digitalWrite (A1, hög); Gör en inre pullup motstånd
digitalWrite (A2, hög); Gör en inre pullup motstånd
Serial.BEGIN(9600); Kan en seriell anslutning via Arduino till antingen USB eller UART (stift 0 & 1). Observera att överföringshastigheten är inställd 9600
Serial.println ("\nReading ljussensorer."); Placeras i slutet av void Setup() så att det körs en gång, precis innan den ogiltiga Loop()
}

metoden loop() körs om och om igen,
så länge Arduino har makt

void loop() {
SensorLeft = analogRead(LeftSensor); Detta läser värdet i sensorn och sedan sparar den till motsvarande heltal.
Delay(1); fördröjningen kan den Analog till Digital omvandlaren IC att återhämta sig inför nästa behandlingen.
SensorRight = analogRead(RightSensor); Detta läser värdet i sensorn och sedan sparar den till motsvarande heltal.
Delay(1); fördröjningen kan den Analog till Digital omvandlaren IC att återhämta sig inför nästa behandlingen.

SensorDifference = abs(SensorRight = SensorLeft);

Detta avsnitt av skiss används för att skriva ut värdena i de
sensorer via seriell till datorn. Användbart för att bestämma
om sensorerna arbetar och om koden också fungerar.
Detta kallas felsökning.

Serial.Print ("vänster Sensor ="); Skriver ut texten i citat.
Serial.Print(SensorLeft); Skriver ut värdet på vänster sensorn.
Serial.Print("\t"); Skriver ut en flik (mellanslag).
Serial.Print ("rätt Sensor ="); Skriver ut texten i citat.
Serial.Print(SensorRight); Skriver ut värdet av rätt sensorn.
Serial.print("\t"); / / Prints en flik (mellanslag).
Serial.print ("Sensor skillnaden ="); Skriver ut texten innanför citattecknen.
Serial.Print(SensorDifference);
Serial.Print("\n"); Skriver ut en ny rad efter alla nödvändiga data visas.
}

Se Steg
Relaterade Ämnen

YourDuino: Grundläggande Arduino-kompatibel att undvika kollision Robot

Hur man bygger en grundläggande Arduino-kompatibel kollision-undvika RobotObs: Se de tillgängliga Arduino programvara Test skisser och kollisionsundvikande programvara här (klicka)Obs: Senare måste du ha Arduino "IDE" programvara utvecklingssyst...

Förbättra din Ultimate Frisbee spel med dessa grundläggande kasta tekniker

som tidigare ledamot av Iowa State University Women's Ultimate Frisbee Team, Kvinna hånad, som har synts på College medborgare 2009 och 2011, jag har några insikter i sporten Ultimate Frisbee. Jag har fått alla mina färdigheter och kunskaper från and...

Lätt grundläggande Arduino Ethernet Controller

jag nyligen gick ut och köpte en Arduino Ethernet Shield men kunde inte riktigt ta den i bruk som jag inte kunde hitta några lätt tutorials så jag började att försöka kod själv. Jag kunde komma med en enkel del av koden som visade på en LED från din...

Med chipKIT grundläggande i/o-sköld med Analog RGB Strip LED

För några månader sedan jag skrev ett blogginlägg om chipKIT grundläggande I/O sköld och används Analog RBG remsor att demonstrera den öppna avlopp fETsna.Detta inlägg är att ge information om hur tråd upp remsan lysdioder till I/O sköld.Du bör redan...

Fotografera snöflingor med en grundläggande point-and-shoot kamera

målet: fotografera snöflingor använda en vanlig, off-the-shelf, point-and-shoot kamera. Jag skapade också en "holiday mosaik" med snöflinga bilder. Du kan hoppa över till den sista steget för en "galleri av snöflingor."Fånga dessa verk...

Grundläggande Arduino början krets

kolla in TECHSHOP. TECHSHOP. WS. Detta kommer att vara en grundläggande krets med 2 lysdioder och 1 switch. Vi kommer att använda arduino uno. kretsen kommer att utföra som: när ingenting trycks det röda ljuset kommer att bo när knappen trycks in sed...

Grundläggande Arduino blixtljus

detta instructable visar dig hur man gör en grundläggande blixtljus med en arduino.Du behöver-4 lysdioder (koden kan ändras för mer information om du vill)-en arduino (jag använder UNO r3)-ett gem-en dator med arduino ide installerat-ett A / B USB-ka...

Lektion 4: Grundläggande Arduino Pt. 2: Introduktion till kodning

Välkommen tillbaka, ivriga elever. För de nya till denna serie, se mitt tidigare lektioner i grundläggande elektroteknik. För de inte nya, förbereda sig för att ange en värld av kodning, där du kan ändra hur din krets fungerar via en dator. Detta är...

Grundläggande Arduino Tutorials: 01 blinkande LED

i detta instructable, jag ska visa dig hur man gör en enkel krets/kod med en arduino, vilket kommer att göra en lysdiod ansluten till den flash från av till på, med 1 sekunds intervall, som visas nedan.Detta är en mycket lätt, grundläggande idé, men...

Grundläggande Arduino tid och datumvisning

HejJag är DavisDetta är min första någonsin instuctable så bli inte till hårdDetta är för en grundläggande klocka visas på en LCD-DisplaySteg 1: Installation och utrustningFörsta av all utrustning:1 x Arduino enhet (jag använder en Freetronics Arduin...

Gör ditt hem Imporvement projekt enklare med denna grundläggande råd

Konst iѕ en aktivitet som barnen. Det аre mаny saker som уou сan utbilda yоur barn abоut konst. Till exempel whаt konst iѕ usеd, förlägger konst іs sett, verktyg att аre används, ytor thаt konst är usеd på аnd olika konstnärliga yrken. Jag kommer bе...

Grundläggande NXT robot, första försöket

Hej,Detta är mitt första försök med NXT robotar, och jag fann det mycket fin...

RC bil till autonoma Arduino Robot

Har du någonsin önskat att konstruera en enkel autonoma Arduino robot? Jag blev inspirerad att bygga en grundläggande Arduino robot för att hjälpa min förståelse av Arduino, Arduino IDE och driften av ultraljudssensorer och motor förare. Och så, jag...

Arduino nybörjare och grundläggande elektronik Kit Primer

lärde jag mig att en av mina systerdöttrar hade ett intresse för programmering. Hon arbetade med robotics på gymnasiet och har en sommar praktikplats där de hade Arduinos. Jag tror att hon kunde låna en Arduino för att experimentera med hemma men var...

Bygga en Gaming dator, eller lära sig de grundläggande delarna

Min son älskar teknik, vi har byggt en massa projekt tillsammans men detta är hans favorit. Detta gaming dator är hans stolthet och glädje. Den kan hantera alla av hans spel, streaming & inspelning behov, FPS är top notch och den grafiska kvaliteten...

Android-utveckling: Att skapa en grundläggande kalkylator

Välkommen till en rolig tutorial på att göra en grundläggande kalkylator på en Android-applikation. I denna tutorial guidar jag dig genom dataöverföring all nödvändig programvara, utforma layouten för ansökan, kodning till att få det att fungera orde...

Grundläggande Zippo öppning knep

Steg 1: Måste du först en zippo. Måste du hålla den i ena handen på sidan med gångjärnetSteg 2: Du då behöva ta din andra hand och föra den längs sidan zippo med tillräcklig friktion Öppna locketSteg 3: Vid denna punkt locket bör vara öppna, nu för d...

4 grundläggande kommandon för att göra ritningar i AutoCAD: Använd dem för att rita en stjärna

Detta Instructable är skriven för dem som bara lärande och börjat med AutoCAD med syfte att förmedla några goda råd. Det förutsätter vissa anläggning med datorn.Jag kommer att visa hur man gör stjärnan ovan med fyra grundläggande och mycket användbar...

Grundläggande läder halvmask

Välkommen!Här hittar du en handledning om att göra en grundläggande läder halfmask (som visar på 2: a bilden).Jag har arbetat med läder i över 15 år, och ville bara dela en grundläggande gå igenom om hur man gör en bra mask av din alldeles egna :)Gär...