Arduino experiment (Supersize Instructable) (5 / 14 steg)
Steg 5: Skicklighet nivå: medel. (1)
- LCD-skärm SETUP (extern seriell bildskärm) Många användningsområden för att ha din egen skärm automatisk rulla meddelanden att varna bort folk från områden som till exempel använda det som en seriell övervaka att läsa outputted data (rörelsedetektorn) är perfekt för detta ändamål här grundläggande budskapen och rullning LCD kommer att dras, en hel del kabeldragning krävs här samt en Potentiometer för inställning av skärmens kontrast så att du tydligt ser meddelandet du har pre in i den mikrokontroller.
- Koppla upp skärmen kan vara lite irriterande men kommer att få kläm på det efter ett par trys med flera arduino styrelser, det blir lätt att ställa upp du vet hur man ställer in en potentiometer av nu efter att ha använt en för att kontrollera servo tidigare använda denna länk för en Arduino anvisningar för anslutning av skärmen.
http://arduino.cc/en/Tutorial/LiquidCrystal , vänligen ladda ner flytande kristall biblioteket från webbplatsen också, det behövs för att köra kod som gör att LCD-skärmen... genom att nu du veta hur till extraktet en zip arkivera och flytta sitt innehåll till exempel/sketchbook-mappen i din IDE läge, om du har några problem det finns gott om online-innehåll och guider om hur man binder upp och eller länka LCD-skärmen, kan också ett 3 tråd SKIFT register gränssnitt skapas med rätt verktyg lödkolv prefboard hoppare ledningar 8-bitars skiftregister , och extra kvinnlig eller manlig huvud stift som kan räddas från en gammal PC med de lödning utrustning finns det några instructables på bara sökningen för LCD och arduino så småningom hittar du ett par att visa dig hur man gör detta så kommer det att spara stift, till priset av mer kodning, köpa en större styrelse (mega) eller använda en Prototyping sköld med massor av anpassade svetsade/lödda extra ingång stift och driva pins , gnd etc.
- SOLAR POWER SETUP (behövs för att sänka din energiförbrukning och externa driver projekt) använda DIY byggande paneler några, och återvunna gamla trasiga sol ljus att få ännu mer för att extra lite laddning makt, använda högeffektiva paneler i tillfälliga bostäder eller lös som visas i bilder, ladda upp några batterier 3,3 v batteri jag använder, när ansluten till en komponent som kräver mer anknyta x2 batterier i serie utbudet en trevlig 6.6volts makt så att endast x2 gamla återvunnet mobiltelefon batteri kan driva en uno för min erfarenhet totalt ca 1/2 timmes med lägre power program, temperatur och externa komponenter kommer att öka belastningen och sjön på lagrade fotoniska energi så med en modul med en krets som show (inte rekommenderat) som tar extra kraft i styrelsen kommer att sätta ett större avlopp på banan så alltid använda mindre delar om möjligt och alltid använda det korrekta värdet resistor för att inte förlora eller slösa din solenergi (att vara grön alltid tillrådligt där det kan vara anställd och används effektivt)
- DHT11 (temperatur och luftfuktighetsgivare) Har många användningsområden att göra ultraljudssensorer mer exakt genom att jämföra lufttätheten via mätning av temp/humi, som båda effekt hur beräknas som rusas av solitt, Data och miljöövervakning-system som använder en "Data Logger" för att lagra alla temperaturvariationer i robotteknik flera användningsområden kan vara anställd båda av ovanstående till att börja också bra för mäta hur varmt batteri och delar få under användning , så du kan räkna ut optimal miljö din robot fungerar i troligen fungera bättre vid lägre temperatur 's som heta komponenter kommer att svalna snabbare, men batteriet kan leverera mindre ström då normal vid extremt låga temperaturer... Lätt att ställa in endast 3 anslutningar 5v & gnd, följt av signal PIN-koden till "Analog 4" som du kommer att mäta dess indatavärdet för att urskilja dess temp/fukt... Ingen bibliotek behövs bara spara kod till en ny skiss och ger den namnet DHT11, kod efter denna linje ___ / * DHT11 exempel skiss kod för att läsa sensorn omedelbart på ditt program!
Exempelkoden: Nick Athanasoulas Date: 27/5/2012 funktion: det läser sensorn var 2 sekunder utan förseningar. Du kan också använda temperatur och luftfuktighet värden direkt som ett heltal och jämföra det med andra värden utan att göra nya matriser. * / #define DHT11_PIN 4 / / ADC0 definiera den analoga Pin ansluten till DHT11 Sensor int temp1 [3], Temp1, temp2, hum1 och hum2 är de slutliga heltalsvärden som du ska använda i ditt program. int temp2 [3], De uppdaterar varannan sekund. int hum1 [3], int hum2 [3],
byte read_dht11_dat() {byte jag = 0; byte resultatet = 0; för (jag = 0; jag < 8; i ++) {
medan (! () PINC & _BV(DHT11_PIN))); vänta på 50us delayMicroseconds(30);
om (PINC & _BV(DHT11_PIN)) resultatet | = (1 < <(7-i)); medan ((PINC & _BV(DHT11_PIN))); vänta '1' avsluta
} returnera resultat; }
lång dht11delay_previousMillis = 0; kommer att lagra förra gången LED var uppdaterade lång dht11delay_interval = 1000; dht11delay_interval som blinka (millisekunder)
void setup() {DDRC | = _BV(DHT11_PIN); PORTC | = _BV(DHT11_PIN);
Serial.BEGIN(9600); Serial.println ("DHT11 utan dröjsmål"); Serial.println ("exempelkod av: Nick Athanasoulas"); Serial.println("ready"); Delay(1000); }
void loop() {
osignerade långa dht11delay_currentMillis = millis();
om (dht11delay_currentMillis - dht11delay_previousMillis > dht11delay_interval) {/ / spara den senaste gången du blinkade LED dht11delay_previousMillis = dht11delay_currentMillis, byte dht11_dat [5]; byte dht11_in, byte i. / / start skick / / 1. pull-down i/o pin från 18ms PORTC & = ~ _BV(DHT11_PIN); delay(18); PORTC | = _BV(DHT11_PIN); delayMicroseconds(40);
DDRC & = ~ _BV(DHT11_PIN); delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);
IF(dht11_in) {Serial.println ("dht11 börja villkor 1 inte är uppfyllda"); return;} delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN);
IF(!dht11_in) {Serial.println ("dht11 börja skick 2 inte är uppfyllda"); return;} delayMicroseconds(80); nu redo för data mottagning för (jag = 0; jag < 5; i ++) dht11_dat [i] = read_dht11_dat();
DDRC | = _BV(DHT11_PIN); PORTC | = _BV(DHT11_PIN);
byte dht11_check_sum = dht11_dat [0] + dht11_dat [1] + dht11_dat [2] + dht11_dat [3]. Kolla check_sum om (dht11_dat [4]! = dht11_check_sum) {Serial.println ("DHT11 checksum error");}
temp1 [0] = dht11_dat [2]; temp2 [0] = dht11_dat [3], Serial.Print ("temperatur:"); Serial.Print(temp1[0]); Serial.Print("."); Serial.Print(temp2[0]); Serial.Print ("C"). Serial.Print(""); hum1 [0] = dht11_dat [0]; hum2 [0] = dht11_dat [1]; Serial.Print ("luftfuktighet:"); Serial.Print(hum1[0]); Serial.Print("."); Serial.Print(hum2[0]); Serial.println("%");
{}} / / END I KODEN.
Denna skiss läser en PING))) ultraljud avståndsmätare och returnerar avståndet till närmaste objektet i intervallet. Det gör det skickar en puls till sensorn att inleda en behandling, då lyssnar efter en puls att återvända. Längden på den återkommande pulsen är proportionell mot avståndet av objektet från sensorn. Kretsen: * + V anslutning av PING))) kopplad till + 5V * GND anslutning av PING))) fästs marken * SIG anslutning av PING))) bifogas digital stift 7
http://www.arduino.cc/en/Tutorial/Ping skapad 3 Nov 2008 av David A. Mellis ändrade 30 Aug 2011 av Tom Igoe detta exempelkod är i public domain.
*
/ Denna konstant kommer inte att ändra. Det är den pin-kod / / av sensorns utgång: const int pingPin = 7.
void setup() {/ / initiera seriell kommunikation: Serial.begin(9600);}
void loop() {/ / fastställa variabler för varaktigheten av ping, / / och avstånd resultatet i tum och centimeter: lång varaktighet, tum, cm;
PING))) utlöses av en hög puls av 2 eller fler mikrosekunder. Ge en kort låg puls förhand för att säkerställa en ren hög puls: pinMode (pingPin, produktionen); digitalWrite (pingPin, låg); delayMicroseconds(2); digitalWrite (pingPin, hög); delayMicroseconds(5); digitalWrite (pingPin, låg);
Samma PIN-koden används för att läsa signalen från PING))): en hög / / pulse vars varaktighet är tid (i mikrosekunder) från den sändande / / av ping till mottagning av dess eko av ett objekt. pinMode (pingPin, ingång); längd = pulseIn (pingPin, hög);
konvertera tiden till ett avstånd tum = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.Print(inches); Serial.Print ("in"); Serial.Print(cm); Serial.Print("cm"); Serial.println(); Delay(100); }
långa microsecondsToInches (lång mikrosekunder) {/ / enligt Parallaxs datablad för PING))), det finns / / 73.746 mikrosekunder per tum (dvs. ljud resor på 1130 fot per / / sekund). Detta ger vägsträcka som ping, utgående / / och retur, så vi delar med 2 att få distansera av hindret. Se: http://www.parallax.com/dl/docs/prod/acc/28015-PI... återvända mikrosekunder / 74 / 2; }
långa microsecondsToCentimeters (lång mikrosekunder) {/ / ljudets hastighet är 340 m/s eller 29 mikrosekunder per centimeter. / / ping reser ut och tillbaka, så för att hitta distansera av den / / objekt vi tar hälften av den tillryggalagda. återvända mikrosekunder / 29 / 2;}
Öppna den seriella bildskärmen när du laddar upp koden och lägga handen framför sensorn flytta den fram och tillbaka titta på när avståndet ändras testa det fungerar exakt, kom ihåg lufttrycket kan påverka det temperatur och luftfuktighet och andra miljöfaktorer. (ENDAST VIDEO TILLGÄNGLIG FÖRRÄN JAG UPPREPA DET SOM ALDRIG TOG BILDER)