Gå til innhold

Den lille Arduino-tråden


Anbefalte innlegg

oj, ja nå funker det, var mye forandring :p trodde jeg hadde begynt å lære noe :p

 

hva er hoved endringene du har gjort her egentlig?

 

pinMode(redLedPin, OUTPUT); trodde det måtte hete ledPin egentlig, vet ikke hvorfor jeg tenkte det.

 

å at du har float temperature = 0; øverst ja.

 

å denne to plasser?

 

temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

arti at det fungert nå iværtfall, må jeg bare få resten av lysene igang imorgen ; )

 

Takk for hjelpen;) så langt :p Nå kan jeg ENDELIG ta kveld! :p

Lenke til kommentar
Videoannonse
Annonse

Nå har eg riktig nok ingen tilknytning til denne butikken, men har handlet for ca 10000,- ifbm jobb og da er alltid norske levrandører enklere.

 

Dei er ikkje spesielt rimelige, men prisene er ikkje høyere enn forventet nivå i norge, og servicen har vært veldig bra.

 

www.robonor.no

Lenke til kommentar

float temperature = 0;

int temperaturePin = 0;

int redLedPin2 = 2; // Rød diode nr 2 over 27c

int redLedPin3 = 3; // Rød diode nr 3, over 25c

int yellowLedPin4 = 4; // yellow diode nr 4 under 24c

int yellowLedPin5 = 5; // yellow diode nr 5 under 22c

int blueLedPin6 = 6; // Blue LED nr 6 under 20c

int blueLedPin7 = 7; // Blue LED nr 7 under 16c

int ledState = LOW;

 

void setup()

{

pinMode(redLedPin2, OUTPUT);

pinMode(redLedPin3, OUTPUT);

pinMode(yellowLedPin4, OUTPUT);

pinMode(yellowLedPin5, OUTPUT);

pinMode(blueLedPin6, OUTPUT);

pinMode(blueLedPin7, OUTPUT);

Serial.begin(9600);

}

 

void loop()

{

 

temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

 

if (temperature >= 27)

digitalWrite(redLedPin2, HIGH);

else

digitalWrite(redLedPin2, LOW);

 

if (temperature >= 25)

digitalWrite(redLedPin3, HIGH);

else

digitalWrite(redLedPin3, LOW);

 

if (temperature <= 24)

digitalWrite(yellowLedPin4, HIGH);

else

digitalWrite(yellowLedPin4, LOW);

 

if (temperature <= 22)

digitalWrite(yellowLedPin5, HIGH);

else

digitalWrite(yellowLedPin5, LOW);

 

if (temperature <= 20)

digitalWrite(blueLedPin6, HIGH);

else

digitalWrite(blueLedPin6, LOW);

 

if (temperature <= 16)

digitalWrite(blueLedPin7, HIGH);

else

digitalWrite(blueLedPin7, LOW);

 

 

temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

Serial.println(temperature);

delay(5000);

}

 

float getVoltage(int pin)

{

return (analogRead(pin) * .004882814);

}

 

Sånn!

Nå funker det nesten perfekt ;)

Lenke til kommentar

Det som er hovedendringen, er at du skrev

 

if (a0 > setValue) // Dette er a0, og ikke temperaturen.. temperatur-variablen heter jo "temperature"

 

Det som står to plasser er feil, bare fjern den som er nederst.

 

Et triks er å slå av alle led før du starter IF kontrollene, så slår du på den som passer.

Dette går så fort, at du vil ikke se det.

Lenke til kommentar

hehe ja okey :p

 

slå av alle led før jeg starter if kontrollen? slå på den som passer? whoot? føler meg dum nå egentlig :p

 

ser denne koden? skal den ikke slå på lyse når den er 24 grader eller mere nå, og slå den av når den kjem ned på 22 grader?

 

if (temperature <= 24)

digitalWrite(yellowLedPin4, HIGH);

else if (temperature < 22)

digitalWrite(yellowLedPin4, LOW);

 

å en annen ting som ikke har me dette å gjøre, var bare så sykt irriterene, det har begynt å ta så sykt lang tid å laste en kode til arduinoen, tar nesten 1 minutt før den er ferdig å laste opp!

Endret av Formula90
Lenke til kommentar

Nå funker det akkurat som det skal, er aldri mere en et lys på om gangen, her er koden:

 

 

float temperature = 0;

int temperaturePin = 0;

int redLedPin2 = 2; // Rød diode nr 2 over 27c

int redLedPin3 = 3; // Rød diode nr 3, over 25c

int greenLedPin4 = 4; // yellow diode nr 4 under 24c

int greenLedPin5 = 5; // yellow diode nr 5 under 22c

int blueLedPin6 = 6; // Blue LED nr 6 under 20c

int blueLedPin7 = 7; // Blue LED nr 7 under 16c

int ledState = LOW;

 

void setup()

{

pinMode(redLedPin2, OUTPUT);

pinMode(redLedPin3, OUTPUT);

pinMode(greenLedPin4, OUTPUT);

pinMode(greenLedPin5, OUTPUT);

pinMode(blueLedPin6, OUTPUT);

pinMode(blueLedPin7, OUTPUT);

Serial.begin(9600);

}

 

void loop()

{

 

temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

 

if (temperature >= 27)

digitalWrite(redLedPin2, HIGH);

else

digitalWrite(redLedPin2, LOW);

 

if (temperature > 26.99)

digitalWrite(redLedPin3, LOW);

else if (temperature > 25)

digitalWrite(redLedPin3, HIGH);

else

digitalWrite(redLedPin3, LOW);

 

if (temperature > 24.99)

digitalWrite(greenLedPin4, LOW);

else if (temperature >= 23)

digitalWrite(greenLedPin4, HIGH);

else

digitalWrite(greenLedPin4, LOW);

 

if (temperature > 22.99)

digitalWrite(greenLedPin5, LOW);

else if (temperature >= 21)

digitalWrite(greenLedPin5, HIGH);

else

digitalWrite(greenLedPin5, LOW);

 

if (temperature > 20.99)

digitalWrite(blueLedPin6, LOW);

else if (temperature >= 17)

digitalWrite(blueLedPin6, HIGH);

else

digitalWrite(blueLedPin6, LOW);

 

if (temperature > 16.99)

digitalWrite(blueLedPin7, LOW);

else if (temperature >= 10)

digitalWrite(blueLedPin7, HIGH);

else

digitalWrite(blueLedPin7, LOW);

 

 

temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

Serial.println(temperature);

delay(1000);

}

 

float getVoltage(int pin)

{

return (analogRead(pin) * .004882814);

}

 

Har en kompis som er veldig go på c kode, han mente det kansje var enkelre å skrive:

 

øvers: #include <math.h>

 

int led = floor( temperature );

 

switch( led ) {

 

case 25:

case 26:

digitalWrite(redLedPin3, HIGH);

break;

case 27:

case 28:

digitalWrite(redLedPin4, HIGH);

break;

}

 

 

prøve det å, men plagdes litt så gjorde det bare som jeg gjorde først : p

 

Endret av Formula90
Lenke til kommentar

Detta har ikke så mye med arduinoen å jør, men vil bare del ka eg fekk i julegave = D fekk en AVR dragon, åså lå det to andre IC i pakken, har ikke sett på dem enda, men regn me det e to microcontrollera ;) ka e forsjelln på denna og arduinoen egentlig? bare kodene som er forsjellig? og programme man skriver koder med?

 

den store der, han kalte det en debugger? eller nå sånt?

 

.

post-255998-0-34975000-1324762163_thumb.jpg

post-255998-0-33786500-1324763492_thumb.jpg

Endret av Hårek
Lenke til kommentar

men over til arduinoen igjen, fikk en rgb lcd i posten, så tenkte jeg skulle prøve å kobble den, er denne: http://www.sparkfun.com/products/10862

 

har koblet det opp etter denne: http://www.arduino.cc/en/Tutorial/LiquidCrystal

 

det blinker bare en firkant? hvorfor funker det ikke? har jo kobblet alt rett! ska bare stå en txt nå, bare for å prøve

 

hvis dere ser på datasheten på lcden jeg kjøpte, og den jeg følger tutorialn på, så stemmer ikke alle navnene på pinnene på de to sjermene, er det bare forsjellige navn??

Endret av Formula90
Lenke til kommentar

Detta har ikke så mye med arduinoen å jør, men vil bare del ka eg fekk i julegave = D fekk en AVR dragon, åså lå det to andre IC i pakken, har ikke sett på dem enda, men regn me det e to microcontrollera ;) ka e forsjelln på denna og arduinoen egentlig? bare kodene som er forsjellig? og programme man skriver koder med?

 

den store der, han kalte det en debugger? eller nå sånt?

 

Så ut til at de to kretsene er Atmega168, og hvis du alt har en Arduino allerede (muligens med en Atmega328), så han du nå bytte ut ICen i den med disse (men disse har mindre RAM og Flash). Vær forsiktig så du ikke bøyer pinnene for mye når du tar ut ICen. Om du ikke har en IC utdrager, bruke et lite skrujern og dytt det inn mellom ICen og sokkelen på kortsiden... forsiktig...

 

Du kan for eksempel bruke arduinoen i prototyping, og når du er ferdig tar du ut ICen og bygger opp kretsen på at eget kretskort og bruker ICene der.

 

AVR Dragon er en debygger, det betyr at ut kan kjøre en og en instruksjon i programmet du skriver, og se hva som skjer i mikrokontrolleren, men du kan også bruke den som en vanlig programmerer, og hvis du vil bruke mega168'ene i Arduinoen, må du bruke AVR Dragon for å legge inn arduino bootloaderen i de ved å koble til 6 pin headeren på Arduinoen (hvis de ikke alt har Arduino sin bootloader).

 

Debugging kan gjøres på forskjellige måter, men jeg foretrekker å bruke AVR Studio. For å kunne bruke AVR dragon for debugging på Arduino må du modifisere den litt: http://husks.wordpress.com/2010/02/21/modify-an-arduino-for-debugwire/

Lenke til kommentar

jeg prøver fortsatt å få skrift på rgb lcden jeg kjøpte, får bare lys i den! holdt på i en evighet nå! denne koden skulle vel ha funket?

 

 

 

#include <LiquidCrystal.h>

 

LiquidCrystal lcd(13, 12, 5, 6, 7, 8);

int lcdRedPWMPin = 11;

int lcdGreenPWMPin = 10;

int lcdBluePWMPin = 9;

 

void setDisplayRGB(int r, int g, int b)

{

analogWrite(lcdRedPWMPin, r);

analogWrite(lcdGreenPWMPin, g);

analogWrite(lcdBluePWMPin, b);

}

 

void setup()

 

{

setDisplayRGB(0,0,255);

lcd.begin(16, 2);

lcd.print("arduino lcd");

 

}

 

 

void loop() {}

 

 

Så hvis det ikke er koden, hva er det da? når jeg så på datasheten til dette displayet, så het pin1 VSS, og pin2 VDD..

men på den tutorialn jeg fulgte så sto det at pin1 var Gnd, og pin2 var VCC? er VDD og VCC det samme? og VSS og Ground?

datasheet:

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/LCD/Monochrome/ADM1602K-FS(RGB)-FBW.pdf

diagrame jeg lagde:

http://arduino.cc/en/uploads/Tutorial/LCD_bb.png

 

opptatering:

 

Jeg kobblet ledningene ned på andre siden av displayet, der jeg ikke hadde loddet noe, å fikk det til å funke, så snart jeg dro de ut, å prøvde å laste opp koden på nytt, så ble det blankt igjen. regner med at det er noen lodder som er borti hverandre da?

 

å er det noen som kan si meg hvordan jeg kan få skrevet på begge linjene?

Endret av Formula90
Lenke til kommentar

Hei allesammen!

Har lenge ønsket meg en arduino å har nå funnet ut at uno'en er perfekt til mitt bruk.

Men, man må vel ha noe tilbehør for at dette skal bli noe morsomt...

 

Har funnet denne: http://www.robonor.no/mag/default/arduino-inventors-kit.html fra Robonor.no er dette noe tess eller er det bedre å kjøpe delene hver for seg?

 

Har ikke noe spesiellt prosjekt på gang enda, da jeg er helt nybegynner. Men har noen tanker om hva jeg kan gjøre når jeg kommer inn i det..

Lenke til kommentar

jeg skal styre 2 stk servoer, helst via en joystick. vil følgende kort gjøre jobben?

Arduino Uno Atmel Atmega 328 MCU board

evt link til "norsk" side.

http://no.rs-online.com/web/p/microcontroller-processor/7154081/?origin=PSF_392815|acc

 

kortet koster jo ikke mere enn et par hundrelapper.

 

Takker for svar/innspill

Er av en eller annen grunn litt skeptisk til RS-Online, men har ingen virkelig begrunnellse for det.

Er liksom litt godt for å være sant at de selger arduino-uno 3-400 kr billigere enn andre jeg har sett.

Etterlyser meninger fra noen som faktisk har handlet der.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...