Sida 3 av 7
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:23:01
av jolerius
vrf är för oss i den yngre generationen en förkortning för varför. Det är så man skriver på nätet
ok, får försöka sätta mig in i koden, men det blev genast en massa uttryck i koden som jag aldrig ens hört talats om, vilket gör det mycket svårare att sätta sig in i den.
Men är det någon som vet om man kan gruppera ihop två utgångar under ett namn?
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:34:52
av jesse
ja nu funkar det. Men jag fattar inte vrf.
OK, vi analyserar koden: (om det är "Krille Krokodil"'s kod du använt)
Kod: Markera allt
//...
LEDPower = 255; // 255 = 100% ljus. Sätts om knappen EJ är intryckt.
// ... när delayloopen är slut så startar fade-stadiet... Det innebär att i varje varv av den här
// loopen vi är inne i, så kommer denna else if - sats att vara sann...
else if (ButtonState) {
//Knapp intryckt och vi befinner oss nu i fade-läge
if(LEDPower > 0) LEDPower--; // Då minskas värdet på LEDpower ett steg.
}
analogWrite(LEDPin, LEDPower);
[/quote] // sedan skrivs det nya värdet till PWM-generatorn
delay(10); // för att inte loopen ska gå för fort har vi en fördröjning i varje steg.
// nu är det lätt att räkna ut hur lång tid faden tar:
// LEDpower startar med värdet 255: Det tar alltså 255 "varv" innan den är nere på noll.
// 255 * 10 ms = 2.55 sekunder, om nu delay(10) betyder 10 ms ?
[/code]
en massa uttryck i koden som jag aldrig ens hört talats om
Det är antagligen Arduino-funktionerna du talar om? Dem får man läsa om på Arduinos hemsida.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:36:42
av sodjan
> Men är det någon som vet om man kan gruppera ihop två utgångar under ett namn?
Nej, inte direkt. Däremot kan du skriva en egen funktion som hanterar
båda portarna så får du bara ett "anrop" från huvudkoden.
> ...men det blev genast en massa uttryck i koden som jag aldrig ens hört talats om...
Är det inte alltid det? Eller hur menar du? Svårt att kommentrera
mer än så utan att veta *vad* det är som du syftar på.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:38:12
av Krille Krokodil
Skall man gruppera utgångar skriver man en funktion för det, tex:
void SetLedPower(byte Power){
analogWrite(LEDPin1, Power);
analogWrite(LEDPin2, Power);
}
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:41:17
av sneaky
Förlåt off-topic men jag kan inte hålla mig, nej, det är inte "så man skriver på nätet". Det är ren jävla slöhet. Säger en gammal gubbe på 32.
Nedanstående skrev jag under tiden som de andra gossarna hann emellan men jag låter det stå kvar ändå. Kanske kan de olika formuleringarna hjälpa:
Vad gäller att gruppera ihop två utgångar så är väl svaret "nja". Du kan ju skriva till hela porten direkt istället för en pinne i taget, då blir det en rad istället för två. Eller så kan du ju skriva en funktion som antingen "slår på" eller "slår av" pinnarna du är intresserad av och sedan kallar du de funktionerna istället för att manuellt slå på och av pinnarna.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 16:45:13
av Krille Krokodil
Fick lite arbetstorka nu en timma så jag roade mig med att skriva koden som en tillståndsmaskin.
Kod: Markera allt
byte ButtonStatus;
byte LEDPower;
byte State = 0;
boolean NewState = true;
void setup(){
pinMode(LEDPin, OUTPUT);
pinMode(ButtonPin, INPUT_PULLUP);
}
void loop(){
ButtonStatus = !digitalRead(Button); //Inverterad så att NO med intern pullup på ger 1 intryckt.
analogWrite(LEDPin, LEDPower);
switch(State){
case 0: State0(); break; // LED släcks.
case 1: State1(); break; // LED tänds upp under 30 sekunder.
case 2: State2(); break; // LED fade till 0
}
delay(10);
}
void State0(){
// State init
if(NewState){
LEDPower = 0;
NewState = false;
}
// To do in state
// State changes
if(ButtonStatus){
State = 1;
NewState = true;
}
}
void State1(){
static unsigned int DelayCounter;
// State init
if(NewState){
LEDPower = 255;
DelayCounter = 3000;
NewState = false;
}
// To do in state
DelayCounter--;
// State changes
if(!ButtonStatus){
State = 0;
NewState = true;
} else if(Delay == 0){
State = 2;
NewState = true;
}
}
void State2(){
// State init
if(NewState){
NewState = false;
}
// To do in state
if(LEDPower) LEDPower--;
// State changes
if(!ButtonStatus){
State = 0;
NewState = true;
}
}
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 16:59:56
av jolerius
Oj, nu hängde jag inte med alls. Jämfört med den här nya koden så verkar den förra som en barnlek för mig.
Men jag har ett nytt bekymmer. Jag kommer driva arduinon med ett 9v batteri kopplat till Vin och Gnd. Kan jag på något sätt göra så att LED blinkar när spänningen kommer under ett visst värde? Visst man lär ju märka när batteriet är slut. Men hade vart coolt om man kunde få en status på det så att man kan köpa nytt med en gång om man inte har det hemma.
Eller är det så att jag måste koppla in batteriet på annat sätt för att kunna övervaka det?
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 17:07:09
av Klas-Kenny
Det är enkelt, en spänningsdelare av två motstånd så man får ut en lägre spänning som Arduinon kan ta direkt på ingången, sen koppla det till en analog ingång på Arduinon vilken man läser av lite då och då och kollar värdet.
Kan rekommenderas att även montera tex. en Zenerdiod till den ingången så att man får lite redundans mot för hög spänning ifall tex. Det ena motståndet lossnar.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 17:09:49
av jolerius
Ja för dig lät det tämligen enkelt.. men i mina öron va det rena grekiskan.. du skulle inte kunna rita upp det?
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 17:27:54
av sneaky
Det blir nog lättare att förstå den biten när du gått igenom den kod du redan fått och förstått den först

Tyvärr är det en liten inlärningströskel när man ger sig in i det här träsket. Men! Det är väldans skoj när saker och ting börjar "klicka" i skallen och man börjar förstå hur saker och ting hänger ihop. Jag får känslan av att du har lite för bråttom och inte hinner smälta stegen innan du går vidare till nästa steg.
Men, för att bena upp Klas-Kennys inlägg lite så kan du ta det steg för steg.
(edit: Nedan länkar slumpade från google, har bara skummat texten)
Spänningsdelare:
http://www.sparkfun.com/tutorials/207
Analog ingång:
http://arduino.cc/en/Tutorial/AnalogInput
Zener-dioder:
http://en.wikipedia.org/wiki/Zener_diode#Uses
Som du märker så växer det snabbt och det är därför det är bra att ta det lite lugnt, ett steg i taget. Bara som referens så tog det mig ett par dagar innan jag fick min första PIC att överhuvudtaget visa livstecken
Allt detta förutsatt förstås att du vill lära dig och kunna göra egna projekt med egen kod längre fram. Om du bara vill få just den här prylen att funka så går det såklart bra att klippa o klistra tills det fungerar.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 18:02:57
av jolerius
Ja, tanken e ju att lära mig.. så detta blir ett projekt att starta med.. men samtidigt vill man ha ut så mycke som möjligt av det..
Någon som förresten vet om arduino nano har några begränsningar som gör att jag inte kan köra detta projekt på en sådan?Nyckelskåpet e inte tillräckligt stort för min arduino uno jag lekt med...
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 18:14:48
av sodjan
Det är bara att räkna pinnar som du behöver!
Jag har svårt att se att det inte räcker...
Vad blir det, 4 st?
2 LEDs, 1 kontakt och 1 batterimätning.
http://arduino.cc/en/Main/ArduinoBoardNano/ :
Digital I/O Pins: 14
Analog Input Pins: 8
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 18:47:42
av jolerius
men nanokorten har ingen annan begränsning än att de e mindre bara??
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 19:05:16
av sneaky
Har du läst dokumentationen till de två korten, eller åtminstone sammanfattningen? Den ena länken fick du ju av sodjan.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 19:11:37
av Krille Krokodil
jolerius skrev:Oj, nu hängde jag inte med alls. Jämfört med den här nya koden så verkar den förra som en barnlek för mig.

Tillståndsdiagram är en metod för att bryta ner komplexa problem i mindre, enklare bitar, så här ritar man dem:
Så du har 3 states:
0 LED släckt
1 LED fullt på
2 LED fade to black
Entry action för dem är:
0 Släck LED
1 Tänd LED och nollställ 30 sek-timern
2 Starta fade out
Transitions och transition conditions är:
0->1 Dörr öppen
1->0 Dörr stängd
1->2 Dörr öppen > 30 sek
2->0. Dörr stängd
Så istället för ett större, komplext problem att lösa har vi nu 10 st mindre, enklare.