Gå til innhold

Den store Arduino tråden, v2.0


Anbefalte innlegg

Videoannonse
Annonse

Jepp. Men du må kanskje gi han noe mer enn noen lysdioder om det ikke skal ende på hylla etter en snau uke.

 

Kjøp et Arduino-kit og noen spennende shield som Ethernet-shield for internett-tilgang, LCD-skjermer, knapper, 433 MHz sendere og mottakere og kanskje en NFC-leser. Du er litt sent ute nå, men hvis du bestiller fra Kina på Ebay så får du slike moduler for under hundrelappen.

 

Edit: Det er kanskje vel så greit å bare vente litt på disse delene uansett, da man alltid må starte med det grunnleggende.

Endret av Gavekort
Lenke til kommentar
Gjest Slettet+5132

 

 

Bruk Map().

/* Map an analog value to 8 bits (0 to 255) */
void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

I ditt eksempel vil det være:

val = map(val, 0, 1023, 0, 99);

 

Her er hva jeg har nå:

 

/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
 
  This example code is in the public domain.
*/
 
// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}
 
// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability
}
 
Hvor skal det settes inn?

 

Bruk Map().

/* Map an analog value to 8 bits (0 to 255) */
void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

I ditt eksempel vil det være:

val = map(val, 0, 1023, 0, 99);
Endret av Slettet+5132
Lenke til kommentar


/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:

int sensorValue = analogRead(A0); //Her kommer til 0 til 1024 verdi som settes til sensorValue.
Serial.println(sensorValue); //Her printes f.eks 512 ut
sensorValue = map(sensorValue, 0, 1023, 0, 99); //Her så endrer du sensorValue til å bli Map av sensorValue
Serial.println(sensorValue); //Her printes den nye sensorValue ut, som er 50

// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
}

 

Endret av Gavekort
Lenke til kommentar
/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:

  int sensorValue = analogRead(A0); //Her kommer til 0 til 1024 verdi som settes til sensorValue.
  Serial.println(sensorValue); //Her printes f.eks 512 ut
  sensorValue = map(sensorValue, 0, 1023, 0, 99); //Her så endrer du sensorValue til å bli Map av sensorValue
  Serial.println(sensorValue); //Her printes den nye sensorValue ut, som er 50

  // print out the value you read:
  //Serial.println(sensorValue); //Kommentert ut
  delay(1);        // delay in between reads for stability
}

Nå vil den printe ut to verdier 1023 og 99. Kobler du til en variabel motstand mellom Aref og A0 så vil du kunne justere denne verdien opp og ned.

 

Serial.println() betyr at det vil printe ut verdien av den variabelen som er inni parantesene, og siden du hadde tre stykker av Serial.println() så var det tre verdier som ble printet for hver iterasjon av loop-løkken din.

Lenke til kommentar
Gjest Slettet+5132

Ser man det ja:)

Fantastisk hjelp å få fra dyktige karer:) Takker

 

Nå kommer enda ett spørsmål, altså neste steg.

 

Disse 0-99 l drive to HEF4028 chipper med BCD binærkoder. Da trenger jeg 8 (4+4 ABCD koder) digitale utganger der LOW er 0v (GND) og HIGH er 5v.

 

A=1

B=2

C=4

D=8

 

Om du kan skrive de to første linjene så skjønner jeg kanskje tegninga på resten. (mulig jeg feiler her også:p)

Tar noen eksempler,

 

0=00000000

1=00001000

27=01001110

56=10100110

83=00011100

99=10011001

 

Kan dette la seg gjøre?

Lenke til kommentar

Jeg har ingen erfaring med Arduino, men er et Arduino-kit noe som kan være en fin julegave til en 15-åring som er interessert i elektronikk og vurderer å søke seg inn på elektrolinja?

 

Ja.

Men min personlige mening er at det er bedre med et kit med et koblingsbrett og en del diskrete komponenter som knapper, resistorer, LED, potensiometer, ol. og en del ledninger enn å kjøpe shields. Man mister en del både læring og mestringsfølelse med ferdig koblede shields i forhold til å koble det opp selv på koblingsbrett .

 

Her er f.eks et kitt fra en Norsk butikk:

https://www.kjell.com/no/produkter/elektro-og-verktoy/elektronikk/arduino/tilbehor/pabyggersett-for-arduino-p87999

 

Og personlig så foretrekker jeg teensy fremfor arduino da man får mye bedre ytelser og flere funksjoner samtidig som man kan bruke den vanlige arduino IDE'en for å programmere den, også er den designet så man kan plugge den rett i koblingsbrettet med noen headers istedenfor å legge den ved siden av og dra ledninger over til koblingsbrettet.

Men jeg tror ikke det er noen Norske nettbutikker som forhandler teensy da.

  • Liker 1
Lenke til kommentar

 

Jeg har ingen erfaring med Arduino, men er et Arduino-kit noe som kan være en fin julegave til en 15-åring som er interessert i elektronikk og vurderer å søke seg inn på elektrolinja?

 

Ja.

Men min personlige mening er at det er bedre med et kit med et koblingsbrett og en del diskrete komponenter som knapper, resistorer, LED, potensiometer, ol. og en del ledninger enn å kjøpe shields. Man mister en del både læring og mestringsfølelse med ferdig koblede shields i forhold til å koble det opp selv på koblingsbrett .

 

Her er f.eks et kitt fra en Norsk butikk:

https://www.kjell.com/no/produkter/elektro-og-verktoy/elektronikk/arduino/tilbehor/pabyggersett-for-arduino-p87999

 

Og personlig så foretrekker jeg teensy fremfor arduino da man får mye bedre ytelser og flere funksjoner samtidig som man kan bruke den vanlige arduino IDE'en for å programmere den, også er den designet så man kan plugge den rett i koblingsbrettet med noen headers istedenfor å legge den ved siden av og dra ledninger over til koblingsbrettet.

Men jeg tror ikke det er noen Norske nettbutikker som forhandler teensy da.

 

 

Begge deler vil jeg nå si er den beste løsningen. Etter min erfaring så blir de unge fort lei av enkel elektronikk, og må få en målsetting der de ser at de kan utrette ting som spill på en LCD-skjerm eller en webserver de kan åpne på datamaskinen. Det er en bratt lærekurve opp dit og man begynner selvsagt med noe enkelt. Det er også viktig å vise at man ikke er begrenset til noen blinkende lys.

 

Kjøper du et Arduino-kit så får man vel noen få komponenter man kan begynne med.

 

Takk for at du nevnte Kjell og Co forresten. Ante ikke at vi hadde fysiske butikker som selger elektroniske komponenter her i Norge. Nå vet jeg hvor jeg skal på Lørdag.

Endret av Gavekort
  • Liker 1
Lenke til kommentar

 

Jeg har ingen erfaring med Arduino, men er et Arduino-kit noe som kan være en fin julegave til en 15-åring som er interessert i elektronikk og vurderer å søke seg inn på elektrolinja?

 

Ja.

Men min personlige mening er at det er bedre med et kit med et koblingsbrett og en del diskrete komponenter som knapper, resistorer, LED, potensiometer, ol. og en del ledninger enn å kjøpe shields. Man mister en del både læring og mestringsfølelse med ferdig koblede shields i forhold til å koble det opp selv på koblingsbrett .

 

Her er f.eks et kitt fra en Norsk butikk:

https://www.kjell.com/no/produkter/elektro-og-verktoy/elektronikk/arduino/tilbehor/pabyggersett-for-arduino-p87999

 

Og personlig så foretrekker jeg teensy fremfor arduino da man får mye bedre ytelser og flere funksjoner samtidig som man kan bruke den vanlige arduino IDE'en for å programmere den, også er den designet så man kan plugge den rett i koblingsbrettet med noen headers istedenfor å legge den ved siden av og dra ledninger over til koblingsbrettet.

Men jeg tror ikke det er noen Norske nettbutikker som forhandler teensy da.

 

Ja, var et lignende kit jeg har sett på hos en amerikansk forhandler. Perfekt med norsk forhandler. Takker! :)

 

Joda, kan være kjekt med flere funksjoner, men han her er helt fersk, så tror det skal være greit å starte med dette.

Lenke til kommentar

noen lett måte å forandre utgangene på arduino fra å gi + signla til -? releene reagerer på - sigal men arduinoen gir jo + signal. hvis det stemmer, igjaffal når jeg har koblet til 5v på + og GND på - på strømmen inn til releet, så må jeg koble rele inngangene på - for å aktivere de..

Lenke til kommentar

 

Digitalwrite pin low istedenfor high?

så lett?  :hmm: 

 

 

int state = HIGH;      // the current state of the output pin

int statered = HIGH;
int stateblue = HIGH;

sett HIGH til LOW der da? har ikke noe Digitalwrite..

 

og en annen ting. hvordan får jeg vekk motstanden på knappene? 

https://www.arduino.cc/en/tutorial/switch

 

 

Motstanden må være på knappen for at du skal lese av den ønskede verdien (høy/lav) når knappen ikke er trykket inn. Dersom du fjerner den kan spenningen variere, og når du leser av knappen kan du få både få lav og høy når den ikke er trykket inn. En slik motstand kalles pull-up/pull-down.

 

Dersom koden din er samme som i post #994 så har du flere digitalWrite(). Du kan da NOTe verdien før den skrives, med !verdi.

Hvis du bruker en annen kode, så er det en fordel om du poster hele slik at vi kan hjelpe.

 

Edit: Arduino har innebygde pullup-motstander, som nok kan brukes i stedet for eksterne.

Endret av eiik
Lenke til kommentar

 

 

Digitalwrite pin low istedenfor high?

så lett?  :hmm: 

 

 

int state = HIGH;      // the current state of the output pin

int statered = HIGH;
int stateblue = HIGH;

sett HIGH til LOW der da? har ikke noe Digitalwrite..

 

og en annen ting. hvordan får jeg vekk motstanden på knappene? 

https://www.arduino.cc/en/tutorial/switch

 

 

Motstanden må være på knappen for at du skal lese av den ønskede verdien (høy/lav) når knappen ikke er trykket inn. Dersom du fjerner den kan spenningen variere, og når du leser av knappen kan du få både få lav og høy når den ikke er trykket inn. En slik motstand kalles pull-up/pull-down.

 

Dersom koden din er samme som i post #994 så har du flere digitalWrite(). Du kan da NOTe verdien før den skrives, med !verdi.

Hvis du bruker en annen kode, så er det en fordel om du poster hele slik at vi kan hjelpe.

 

Edit: Arduino har innebygde pullup-motstander, som nok kan brukes i stedet for eksterne.

 

fant ut at jeg må ha motstand for å lese riktige verdier ja :) fikk også til koden så da er det problemet fikset :) må vel ha en pull-up/pull-down på PIR sensoren også?

 

jepp stemmer at det er samme kode som i post #994, forandret bare state, staterd og stateblue for HIGH til LOW så funket det fint, sikkert mange andre måter å gjøre det på også men så lenge det funker som det skal så er det det viktigste for meg :)

Lenke til kommentar

 

...

 

fant ut at jeg må ha motstand for å lese riktige verdier ja :) fikk også til koden så da er det problemet fikset :) må vel ha en pull-up/pull-down på PIR sensoren også?

 

jepp stemmer at det er samme kode som i post #994, forandret bare state, staterd og stateblue for HIGH til LOW så funket det fint, sikkert mange andre måter å gjøre det på også men så lenge det funker som det skal så er det det viktigste for meg :)

 

 

PIR sensoren trenger nok ikke pull-up/pull-down motstand, da den sikkert har noe lignende innebygget. Du må søke opp et datablad til sensoren for å være sikker på hvordan den skal kobles, her er et eksempel på datablad til en PIR sensor.

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å
×
×
  • Opprett ny...