Arduino Intelligent bromsljus (4 / 7 steg)

Steg 4: kodning

Jag skriver åter inte här koden från början, jag bara revidera Arduino cykel hastighetsmätare koder av Amanda Ghassaei. Vad jag ändra använder meter per sekund (m/s) istället för mil per timme (mph). Cykeln gör inte går att snabbt så behandlingen meter per sekund är lättare tror jag, men du kan ändra den tillbaka till mph eller km/h om du vill. Den andra saken är som hastigheten till noll när vi stannar vid den plats där magneten håller reed switch stängt.

Jag lägger hastighet läsning att aktivera eller inaktivera ljuset. När hastigheten är långsammare, blinkar lampan så att fordon på baksidan kommer att märka och vara medveten om. När cykeln sluta helt eller bromsarmens trycks så att hjulet inte snurrar, lampan tänds. Ljuset kommer att vara avstängd på viss tid, kan du ange detta i koden nämligen lightOffDelay och lightOnCounter.

Arduino cykel hastighetsmätare w serial.print()
Amanda Ghassaei 2012

Revidera genom Chienline
Visar noll i stället för Max Speed när reed byter vistelse stängd på stopp.
Ändra från MPH (miles per timme) till m/s (meter per sekund).
Lägga till funktioner av Intelligent stoppa ljus på Digital PIN 13

/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*
*/

beräkningar
däckets radie ~ 13.5 inches
omkrets = pi * 2 * r = ~ 85 inches
max hastighet av 35 km/h = ~ 616inches/sekund
Max rps = ~7.25

#define reed A0 /-pin ansluten till läsa switch
#define stoppljus 13 /-pin ansluten till stoppa ljus

lagring variabler
int reedVal;
int lightOffDelay = 4; bromsljus av fördröjningstiden
int lightOnCounter = 5; slå på stop ljus under viss tid; från början satts högre än lightOffDelay
lång timer; tiden mellan en full rotation (i ms)
float mps; hastighet i m/s
flyta prevmps = 0; tidigare hastighet i m/s
float radie = 13,5; / / däck radius (i tum)
float omkrets;

int maxReedCounter = 100; //min tid (i ms) av en rotation (för debouncing)
int reedCounter;
int i;

void setup() {

reedCounter = maxReedCounter;
omkrets = 2 * 3.14 * radie.
pinMode (reed, ingång);
pinMode (stoppljus, produktionen);

TIMER SETUP - timer avbrottet tillåter exakta tidsinställda mätningar av reed switch
för mer information om konfiguration av arduino timers se < en href = "http://arduino.cc/playground/Code/Timer1" > http://arduino.cc/playground/Code/Timer1
< /a >
(CLI); //stop avbrott

Ställ in timer1 avbrott vid 1kHz
TCCR1A = 0; / / Ställ in hela TCCR1A register till 0
TCCR1B = 0; / / samma för TCCR1B
TCNT1 = 0;
ställa in timer räknas 1khz steg
OCR1A = 1999. / / = (1/1000) / ((1/(16*10^6))*8) - 1
Aktivera CTC läge
TCCR1B | = (1 << WGM12);
Ange CS11 bit för 8 prescaler
TCCR1B | = (1 << CS11);
Aktivera timern jämför avbrott
TIMSK1 | = (1 << OCIE1A);

SEI (); //allow avbrott
AVSLUTA INSTALLATIONSPROGRAMMET FÖR TIMER

LED_OFF();
Serial.BEGIN(9600);
}

ISR(TIMER1_COMPA_vect) {//Interrupt på freq 1 kHz att mäta reed switch
reedVal = digitalRead (vass); //get val av A0
om (reedVal) {//if reed switch är stängd
om (reedCounter == 0) {//min tid mellan pulserna har gått
m/s = (25.4*float(circumference)) / flyta (timer); //calculate meter per sekund
om (mps > 21) {/ / Detta är när röret håller stänga när sluta; du nog inte gå så fort.
m/s = 0;
}
timer = 0; //reset timer
reedCounter = maxReedCounter; //reset reedCounter
}
annat {
om (reedCounter > 0) {//don't låt reedCounter gå negativ
reedCounter-= 1; //decrement reedCounter
}
}
}
annat {//if reed switch är öppen
om (reedCounter > 0) {//don't låt reedCounter gå negativ
reedCounter-= 1; //decrement reedCounter
}
}
om (timer > 2000) {
m/s = 0; //if inga nya pulser från reed switch-däck är fortfarande inställd 0 m/s
}
annat {
Timer += 1; //increment timer
}
}

void LED_ON(int state) {
0 = vissa tid är över. Inaktivera LED; lightOnCounter högre än lightOffDelay
1 = tur LED ON och återställa lightOnCounter
2 = tur LED ON och öka lightOnCounter
om (statligt == 0) {
digitalWrite (stoppljus, låg);
lightOnCounter = lightOffDelay + 1.
}
om (statligt == 1) {
digitalWrite (stoppljus, hög);
lightOnCounter = 0;
}
om (statligt == 2) {
digitalWrite (stoppljus, hög);
lightOnCounter + = 1;
}
}

void LED_BLINK() {
int j;
för (j = 1; j < 10; j ++) {
digitalWrite (stoppljus, hög);
Delay(90);
digitalWrite (stoppljus, låg);
Delay(90);
}
}

void LED_OFF() {
digitalWrite (stoppljus, låg);
}

void displaySpeed() {
Serial.println(MPS);
Serial.println ("m/s");
Serial.println("");
}

void loop() {
Utskriftshastigheten en gång per sekund
displaySpeed();

//--
om (mps == 0) {
om (prevmps! = 0) {/ / broms på; LED_ON för vissa förseningar
LED_ON(1);
}
annat {/ / prevmps = 0; inte flytta
om (lightOnCounter < = lightOffDelay) {/ / ljus om tid inte har klarat
LED_ON(2);
}
annat {/ / ljus om tid har gått, turn ljus OFF
LED_ON(0);
}
}
}
annars om (mps! = 0 & & mps < prevmps) {
LED_BLINK();
}
annat {
LED_OFF();
}

//--

prevmps = mps;
Delay(1000);
}

Se Steg
Relaterade Ämnen

Arduino Intelligent Cap--En omtänksam och användbar Present till far

Min far är en byggnad, han arbetar ganska hårt för att tjäna pengar för att ta oss upp. Han har att arbeta på hög plats under den brännande solen. Han ofta går ut tidigt och kommer tillbaka i skymningen. Dessa dagar är den hetaste och jag är så oroa...

Drive-In cykelparkering

Ibland bör en lat person tänka hårt och arbeta hårt för att njuta av lättja.Jag är en av de lata människorna. En rutin som jag behöver att döda parkering en cykel med cykelställ. Jag hade tagit bort min rostiga cykelställ förra veckan när jag färdig...

Newton´s pendel med El

Min engelska inte är så bra, ska jag försöka förklara så gott som möjligt och ledsen om jag gör misstag i mitt uttalJag gjorde detta projekt med ett pedagogiskt syfte, eftersom det är roliga och fascinerande mode som flödar elektricitet genom lökarna...

DIY Intelligent Autonomus Robot (elektroniska Pet) /w Arduino

Jag älskar alla slags robotar speciellt autonomus eller intelligenta robotar, som har lite mer intelligens än att undvika ett hinder. Så jag bestämde mig att jag ska bygga min egen billig intelligent robot som har en bygga i kameran, avstånd sensorer...

OSRAM DLO3416 Intelligent LED-Display modul - Arduino Test

detta är en test av en OSRAM DLO3416 Intelligent LED Display modul. Detta är ett komplett paket med 4 tecken består av 5 x 7 matrisskrivare matriser. Modulen har RAM, ett komplett ASCII-teckensnitt och en multiplexering krets. Det är extremt lätt att...

Arduino bromsljus

jag byggde Arduino bromsljus för min cykel. I den här videon diskutera jag också polymer litiumjonbatteri. För mer information, kolla gärna in min hemsida:http://jdeboi.com/pimpmybike/...

Trafiksignal / bromsljus ledningar med Arduino Controller

jag alltid velat ha en gammal trafiksignal och slutligen fick en nyligen. Det var dock mycket enkelt fast så att alla lampor var fast på. Vad kul är det? Jag ville prova en Arduino styrenhet och trodde detta skulle vara ett trevligt enkelt projekt at...

Hur man gör Arduino-kontrollerade Intelligent Time-Lapse fotografering

projekt: ljuskänsligt och justerbar dynamiska Time-Lapse fotografiAv Holden Leslie-BoleUngefärlig kostnad: $70 utan kameranJag har gjort några time-lapse fotografering med min GoPro HERO3 ett tag nu och jag har fått några bra bilder. Det har varit gå...

Hur du använder mBlock programvara för att programmera Intelligent korridor ljus kretsen baserat på Arduino

mBlock är en grafisk programmering miljö som är speciellt utformad för nybörjare till lätt att programmet Arduino projekt och skapa interaktiva program. mBlock stöder riklig hårdvara:Arduino UNOArduino Leonardo styrelserArduino NanoArduino mega128Ard...

Intelligent Arduino Uno & Mega Tic Tac Toe (luffarschack)

Jag bestämde mig att skapa det klassiska spelet luffarschack (eller Tic Tac Toe, som den också kallas) på Arduino efter att ha frågat av min dotter om vi kunde bygga ett spel tillsammans. Här är en video henne att spela den slutgiltiga versionen på A...

DIY en cykel bakljus med Arduino

Jag är en cykel entusiast.År sedan när jag är en ung vacker man, i mitt andra år på College, hade jag avslutat ritten från Sichuan till Tibet, den berömda G318 i Kina. Det är känt som världens vackraste och mest farliga väg. Om det finns en chans, bö...

CoPiino fuktkontroll - raspberry pi och arduino

Jag kom nyligen över en vän till mig. Vi pratade om våra senaste projekt där han slutligen berättade om sin källare som har mycket hög luftfuktighet och är för närvarande inte att bra plats där du vill köra projekt.Detta fick oss att tänka på en ny p...

Arduino kontrollerade smart coaster

Den Smart Coaster är en intelligent och dalbana för dina drycker. Den känner igen olika typer av drycker placeras ovanpå det, med en cocktail i Smart Coaster glöder i vissa atmosfäriska och långsamt föränderliga färger. Om du placerar en kopp varmt t...

Christmas Krans 2.0 Raspberry Pi / Arduino "Selfie / Photobooth"

Detta är min festliga hantverk för 2015 och bygger på min 2014 Arduino bygger jul Tune spela Christmas Krans. Jag fick i leker med Raspberry PI detta år och gillade aspekterna av körs på linux och de olika alternativen jag hade med Linux och Python (...

Arduino Biped

En robot definieras som en mekanisk eller virtuella intelligent agent som kan utföra uppgifter automatiskt eller med vägledning.Vanligtvis en robot är en elektro-mekanisk anordning som styrs av datorn och elektroniska programmering.Så jag beslöt att...

Interaktiva led lampa | Tensegrity struktur + arduino

Detta stycke är en rörelse-lyhörd lampa. Utformad som en minimal tensegrity skulptur, ändrar lampan konfigurationen av färger som svar på orientering och förflyttning av hela strukturen.Med andra ord, beroende på dess orientering visar lampan en viss...

Göra ett intelligent skrivbordsklockan, skriven i JavaScript, drivs med Intel Edison

Varför min klockor måste vara mer intelligent...Jag ställa alltid in påminnelser för min kalender möten men när denna lilla "XYZ möte börjar i 15 minuter" desktop anmälan dyker upp i hörnet på min datorskärm jag trycker på Snooze eller Stäng kna...

Geo Data Logger: Arduino + GPS + SD + Accelerometer att logga, tidsstämpel och geo-tag sensordata

uppdateringar17 okt 2013: Jag har publicerat en guide om hur du använder din Android-telefon kan utföra en liknande uppgift genom att utnyttja din Android enheten är inbyggd GPS och sensorer.6 feb 2013: Med på GeoAwesomeness http://geoawesomeness.com...

74HC164 SKIFT Register och din Arduino

SKIFT register är en mycket viktig del av digital logik, de fungerar som lim mellan de parallella och seriella världarna. De minskar tråd räknas, pin och även hjälpa ta last av din cpu genom att kunna lagra sina data.De finns i olika storlekar, med o...