Sida 2 av 7
Re: Arduino + NO brytare + LEDs?
Postat: 13 augusti 2012, 23:57:27
av jolerius
Kod: Markera allt
const int door = 2; // strömbrytaren
const int led = 5; // LEDpin att använda
int buttonState = 0; // variabler för att läsa dörrens status
void setup() {
// talar om att led är en utgång:
pinMode(led, OUTPUT);
// talar om att door är en ingång:
pinMode(door, INPUT);
}
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(door);
// kollar om dörren är stängd.
// om den är det så behålls LED släckt, eller släcks:
if (buttonState == HIGH) {
// Släck LED:
digitalWrite(led, LOW);
}
//Kollar om dörren är öppen..
//om den är det så tänds LED.
else{
// Tänd LED:
digitalWrite(led, HIGH);
}
}
Såhär ser det ut just nu, med bara en LED. Men jag fattar verkligen inte hur jag ska få den att fadeout efter 30 sekunder om den är tänd. Det enda som händer just nu är att lampan slocknar om jag trycker på strömbrytarn. Och det är ju en bit på vägen iaf
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 00:13:19
av Klas-Kenny
Kod: Markera allt
const int door = 2; // strömbrytaren
const int led = 5; // LEDpin att använda
int buttonState = 0; // variabler för att läsa dörrens status
word i;
void setup() {
// talar om att led är en utgång:
pinMode(led, OUTPUT);
// talar om att door är en ingång:
pinMode(door, INPUT);
}
void loop(){
// kollar om dörren är öppen.
if(digitalRead(door) == LOW) {
// Tänd LED:
digitalWrite(led, HIGH);
i = 0;
while(digitalRead(door) == LOW) {
i++;
delay(10);
if(i > 30000) {
break;
}
}
// Släck LED:
digitalWrite(led, LOW);
}
Någonting sådant kanske...
Ger ingen fade-effekt, men det är en början.
Edit: Åter igen, aldrig programmerat Arduino, kan vara något som felar.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 09:51:48
av jolerius
Det funkar inte. Programmet fattar inte vad du menar med "i"?? Och det gör inte jag heller. Arduino ska skrivas i C+, men det kanske var det du gjorde?
Någon annan som kan hjälpa till med koden så att det funkar?
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 09:52:46
av Bola
Vad får du för felmeddelande då?
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 10:01:44
av Bosen
För att skapa fade-effekt så använder an PWM, och det finns det en inbyggd exempelprogram på i arduinos ide, jag tror den heter fade.
Det är PWM (analogWrite) som du ska läsa på om nu...
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 10:15:19
av jolerius
Bola skrev:Vad får du för felmeddelande då?
hade missat
men vad betyder just den raden?
När jag testkör så tänder den bara lampan, den slocknar aldrig??:S
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 11:05:19
av jesse
>Arduino ska skrivas i C+
Jag har hört talas om C, C++ och C#, men aldrig C+
Brukar man inte programmera Arduino i C?
(frågetecknet hör till frågan, inte till C-et..
)
hade missat
men vad betyder just den raden?
eh... jag tror du får kolla nån tutorial eller bok om C-programmering.... Vet du inte vad
word i; betyder kommer du att få det svårt. OBS! Detta är enbart vänligt menat:
Läs här:
http://www.iu.hio.no/~mark/CTutorial/CTutorial.html
C Tutorial
eller låna/köp boken "Vägen till C" av Ulf Bilting.
men vad betyder just den raden?
OK.
word är en variabeltyp i C som betyder att det är ett 16-bitars signerat heltal, som kan anta värden mellan -32768 och 32767.
Det kan användas istället för int. int är ett heltal, men du vet inte säkert hur många bitar det är. Men word är garanterat alltid 16 bitar.
Om du vill kunna räkna till 60000 istället för 30000 kan du använda typen
unsigned word. Då kan du räkna från 0 till 65535.
word i; betyder att du skapar en sådan variabel med namnet i. Sedan kan du använda den variabeln i programmet, t.ex. här:
här räknar i upp från 0 till 30000. Att den ska börja på 0 är inte självklart. Det måste också skrivas. Det står i programmet ovanför while-loopen:
i = 0;
Man kan även tilldela värdet direkt när variabeln deklareras:
word i = 0;
Personligen föredrar jag for-sats om en räknare används... Denna kod gör exakt samma sak som while-satsen ovan:
Kod: Markera allt
for (i=0; i< < 30000; i++) {
if (digitalRead(door) != LOW) break;
delay(10);
}
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 11:33:11
av sodjan
> OK.
>
> word är en variabeltyp i C som betyder att det är ett 16-bitars signerat heltal, som kan
> anta värden mellan -32768 och 32767...
http://arduino.cc/en/Reference/Word
word
Description
A word stores a 16-bit unsigned number, from 0 to 65535. Same as an unsigned int.
> Brukar man inte programmera Arduino i C?
Från
http://arduino.cc/en/Main/FAQ :
...the Arduino language is merely a set of C/C++ functions that can be called from your code.
Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and
then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs
supported by avr-g++ should work in Arduino.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 12:19:49
av Krille Krokodil
Detta skall nog funka (om jag har tänkt rätt)...
Kod: Markera allt
byte ButtonState, ButtonRead = 0, LEDPower = 0;
unsigned int DelayBeforeFade;
void setup(){
pinMode(LEDPin, OUTPUT); //Skall sitta på en av PWM-utgångarna
pinMode(ButtonPin, INPUT_PULLUP);
}
void loop(){
ButtonState = !digitalRead(ButtonPin); //För NO med intern pullup på
if(ButtonState){
//Om knapp intryckt sätt delay en gång
if(!ButtonRead) DelayBeforeFade = 3000;
ButtonRead = 1;
} else {
//Om knapp ej intryckt återgå till grundtillståndet
ButtonRead = 0;
DelayBeforeFade = 0;
LEDPower = 0;
}
if(DelayBeforeFade > 0){
//Knapp intryckt och vi befinner oss fortfarande i delay-läge
DelayBeforeFade--;
LEDPower = 255;
} else if (ButtonState) {
//Knapp intryckt och vi befinner oss nu i fade-läge
if(LEDPower > 0) LEDPower--;
}
analogWrite(LEDPin, LEDPower);
delay(10);
}
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 12:48:47
av Wedge
Datatypen "word" finns inte i språket C, men förekommer ändå ibland och det är då en kompilatorspecifik utökning av språket, eller preprocessormagi.
I Arduino är det implementerat med "typedef unsigned int word;", i filen Arduino.h
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 12:56:34
av jolerius
ja nu funkar det. Men jag fattar inte vrf.
Jag är väldigt ny på det här med programmering, men jag lyckas inte tyda nånstans att den faktiskt fadar?
Fast det gör den. Hur gör jag om jag vill att faden ska ta längre tid?
En annan fråga. Kan man gruppera ex digital5 och digital6 till ett enda namn "leds". Och sen styra allting med ett kommando till båda eller måste man ha ett namn per utgång (led1, led2)??
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:11:10
av Krille Krokodil
Det är bara att bita i det sura äpplet och försöka sätta sig in i vad koden gör

det är så man lär sig programmera. Ta det steg för steg och fundera på vad variablerna håller för värde och vilka vägar som if-satserna tar vid olika tillstånd i loopen.
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:18:36
av sodjan
> Men jag fattar inte vrf.
Vad f-n är "vfr" ???
Förrutom att det är en forummedlem...
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:21:04
av Borre
vrf... Förkortning av varför (onödig förkortning? Absolut).
Re: Arduino + NO brytare + LEDs?
Postat: 14 augusti 2012, 13:21:15
av jesse
sodjan skrev:> OK.
>
> word är en variabeltyp i C som betyder att det är ett 16-bitars signerat heltal, som kan
> anta värden mellan -32768 och 32767...
http://arduino.cc/en/Reference/Word
word
Description
A word stores a 16-bit unsigned number, from 0 to 65535. Same as an unsigned int.
Hmmm,, jag är ganska bra på att gissa i alla fall
