Gå til innhold

Den lille Arduino-tråden


Anbefalte innlegg

Nå kan ikke jeg særlig mye om arduino, men siden det er basert på c, så kanskje jeg kan svare.

Regner jeg med at du inne i loop() lager en:

if( temp >= 30) //er temperaturen høyere eller lik 30 grader?
{
 //set rød led pin høy
}
if(temp < 30 && temp > 28) //er temperaturen under 30 grader OG temperaturen er over 28 grader
{
// set gul pin høy
}
osv...

 

 

Ellers tenker jeg å kjøpe en arduino i gave til en analog elektronikk utvikler, tenker at det skal være veldig lett å komme i gang med. Dette er da en eldre kar som ikke har programmert noe siden universitetet og da med hullkort!

Tips til hva å kjøpe for å komme kjapt i gang (nano, uno, mini?) og hva annet enn en ardu og en usb kabel. Kanskje en ok bok?

Lenke til kommentar
Videoannonse
Annonse

Ellers tenker jeg å kjøpe en arduino i gave til en analog elektronikk utvikler, tenker at det skal være veldig lett å komme i gang med. Dette er da en eldre kar som ikke har programmert noe siden universitetet og da med hullkort!

Tips til hva å kjøpe for å komme kjapt i gang (nano, uno, mini?) og hva annet enn en ardu og en usb kabel. Kanskje en ok bok?

 

En Uno vil nok være det kjekkeste å starte med. En bok om c, og kanskje noen komponenter å begynne å programmere til kunne kanskje vært kjekt.

 

Arduino Uno

Bok om c/c++

div leds

kanskje noen deler fra parallax(PIR/RFID/Ping sensorene er kjekke)

Lenke til kommentar

ja takk for tips, får prøve meg litt frem der ;) må vel ha noe helt i begynnelsen av koden som sier vilken pins lysene er koblet til å eller?

 

å til det den gaven du pratet om så er vel arduino UNO den mest vanlige tror jeg, den de fleste begynner med. kansje kjøpe et sånn kit med breadboard å diverse komponenter så han får testet? men regner med at han har litt sånt liggende?:p og er jo en masse bøker å kjøpe, regner med at noen andre med mere innsikt kommentere snart : p

Lenke til kommentar

Canaldigital hadde som vanlig noe feil så har vært uten internett siden igår mårrest, så da ble jeg sittende å prøve litt selv uten hjelp av internett, prøver fortsatt å lyse noen led lys etter hvor mange grader det er, denne koden er forenklet da jeg bare skulle se om jeg fikk det til først, så her prøver jeg bare å få et lys til å lyse når tempraturn er over 120c (tempratur måleren viser helt feil tempratuerer, derfor den skal lyse etter 120c :p)

 

 

const int temppin = A0;

const int ledPin = 2;

 

 

void setup() {

 

pinMode(0, INPUT);

int ledState = LOW; // put your setup code here, to run once:

Serial.begin(9600);

 

}

 

void loop() {

pinMode(ledpin, OUTPUT);

if (A0 >= 120) digitalWrite(LEDpin 2, HIGH);

 

}

 

fikk ikke dette til å funke, regnet ikke med det heller, men noen pointers?

så det jeg vil fåtil er at: når temperaturn er under 20c så skal det første blåe lyse lyse, under 15, så skal det adre blået lyse lyse. over 20 så skal den gule led lyse lyse, 25 så skal det andre gule lyse lyse, over 30 så skal det første røde lyse lyse, over 35 så skal begge røde lysene lyse, sjønner?

post-255998-0-74560300-1324045922_thumb.jpg

Endret av Formula90
Lenke til kommentar

Takker for var! Har bestillt en uno nå, så får vi se om gaven faller i smak.

 

Forumula:

Antar at du skal ha pinMode i setup(), men tror ikke det vil gi noe effekt i dette tilfellet. Ellers ser jeg at du har en serial oppe, er det A0 du leser av? Stemmer verdiene?

 

Husk at du også må fortelle hva som skal skje om A0 ikke er over eller lik 120.

EDIT: Ardus if tut

if (A0 >= 120)
{ 
 digitalWrite(LEDpin, HIGH);
}
else
{
 digitalWrite(LEDpin, LOW);
}

Endret av Grimnar_
Lenke til kommentar

ahhh okey, burde jeg sjønt :p

 

men kommer opp "LEDpin was not declared in this scope" på digitalWrite(LEDpin 2, HIGH);

 

Hva mener han med det? noe jeg har glømt eller noe jeg må tilføye?

 

har dette i begynnelsen, er ikke dette rett?

 

int temperaturePin = A0;

const int ledPin = 2;

 

int ledState = LOW;

 

void setup() {

 

{pinMode(ledPin, OUTPUT);}

Endret av Formula90
Lenke til kommentar

ja får legge ut koden her:

 

int temperaturePin = A0;

const int ledPin = 2;

 

int ledState = LOW;

 

void setup() {

 

{pinMode(ledPin, OUTPUT);}

 

int ledState = LOW;

Serial.begin(9600);

 

}

 

void loop() {

 

if (A0 >= 120)

{digitalWrite(ledpin 2, HIGH);}

 

else

{digitalWrite(ledpin 2, LOW);}

}

{

float temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

{

Serial.println(temperature);

delay(1000);

}

{

 

float getVoltage(int pin){

return (analogRead(pin) * .004882814);

}

 

}

Endret av Formula90
Lenke til kommentar

ja så det når jeg kopierte den her, så rettet på det, men fikk da opp: expected ) befor numeric constant :p merker den samme linjen som ista fortsatt..

 

har ganske mange {{}} sånnre rundtomkring, har kansje ikke helt skjønt hvor de skal være, som dere ser

Endret av Formula90
Lenke til kommentar

veldig veldig mange brackets ja...

Sjekk eksemplene og tutorialene hos ardu

 

int temperaturePin = A0;
const int ledPin = 2;

void setup() 
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop()
{

  if (A0 >= 120)
 {
   digitalWrite(ledPin, HIGH);
 }
 else
 {
   digitalWrite(ledPin, LOW);
 }

 float temperature = getVoltage(temperaturePin);
 temperature = (temperature - .5) * 100;

 Serial.println(temperature);
 delay(1000);
}

float getVoltage(int pin)
{
 return (analogRead(pin) * .004882814);
} 

Lenke til kommentar

ja jeg får gjøre det, ser endringene du gjorde, funker nå :p nå må jeg bare få resten av ledlysene til å lyse som de skal å, burde vel ikke være for vanskelig tror jeg :p

 

men, trodde det bare var å skrive:

 

const int ledPin = 4; // Gult lys 25c - 29c

const int ledPin = 5; // Gult lys 20c - 24c

const int ledPin = 6; // Blått lys 15c - 19c

const int ledPin = 7; // Blått lys 10c - 14c

 

osv, men det jikk jo ikke, pluss at det står jo: if (A0 == 24.71)

{

digitalWrite(ledPin, HIGH);

 

han hvet jo ikke vilket led lys som ska lyse nå.

 

Enda en ting, fungerer ikke helt som det skal, hvis jeg har: if (A0 < 26) Så lyser lyset hele tiden, prøvd flere forsjellige Comparison Operators som dem kalte det, men er det samme der, enten lyser den hele tiden, eller ikke i det store å det hele

Endret av Formula90
Lenke til kommentar

int temperaturePin = A0;

const int ledPin = 5; // Rød diode 35c - 40c

int ledState = LOW;

void setup()

{

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

}

 

void loop()

{

 

if (A0 <= 25)

{

digitalWrite(ledPin, HIGH);

}

else

{

digitalWrite(ledPin, LOW);

}

 

float temperature = getVoltage(temperaturePin);

temperature = (temperature - .5) * 100;

 

Serial.println(temperature);

delay(500);

}

 

float getVoltage(int pin)

{

return (analogRead(pin) * .004882814);

}

 

Så, jeg har 6 led lys som skal lyse etter hvilken tempratur det er, denne koden så har jeg bare et lys, bare for å få det til å virke, så etter på så kan jeg legge til resten. sånn som det er nå, så lyser dioden hele tiden uansett temperatur. når den egentlig kun ska lyse når x <= y (x is less than or equal to y) altså hvis temperaturn er mindre en 25 grader.

 

under ser du hvordan det vil være til sluttt, hvilket lys som skal lyse til hvilken temperatur.

 

const int ledPin = 2; // Rødt lys 35c - 40c

const int ledPin = 3; // Rødt lys 30c - 34c

const int ledPin = 4; // Gult lys 25c - 29c

const int ledPin = 5; // Gult lys 20c - 24c

const int ledPin = 6; // Blått lys 15c - 19c

const int ledPin = 7; // Blått lys 10c - 14c

Lenke til kommentar

Ok, jeg ville deklarert temperature først, og kun da.

Så vil jeg også kalt led pinnene for noe mer beskrivende red, yellow.green osv.

Har flyttet selve innlesingen av temp. til først i sløyfen, og lagt prøvingen av tilstanden

etter det.

 

Fungerer dette?

 

float temperature = 0;
int temperaturePin = 0;
int redLedPin = 5; // Rød diode 35c - 40c
int ledState = LOW;

void setup()
{
pinMode(redLedPin, OUTPUT);
Serial.begin(9600);
}

void loop()
{

temperature = getVoltage(temperaturePin);
temperature = (temperature - .5) * 100;


if (temperature <= 25)
 digitalWrite(redLedPin, HIGH);
else
 digitalWrite(redLedPin, LOW);


temperature = getVoltage(temperaturePin);
temperature = (temperature - .5) * 100;

Serial.println(temperature);
delay(500);
}

float getVoltage(int pin)
{
return (analogRead(pin) * .004882814);
}  

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...