Gå til innhold

Den lille Arduino-tråden


Anbefalte innlegg

Videoannonse
Annonse

Jeg kjøpte en led liste på biltema idag http://www.biltema.no/no/Bygg/Elektrisk/LED/LED-list-RGB/ uten strøm eller fjernkontroll osv, for tenkte jeg kunne kobble den rett til arduinoen, den skal ha 12v egentlig, men tenkte den skulle klare å gi litt lys, å det gjorde den, var veldig svakt men :p men sjønte ikke helt, det er 4 lednigen seff, den ene er merket R, andre er merket G, tredje er merket B, og den fjerde er merket +? skal det ikke være en som er minus egentlig? skal vel ikke kobble den i 3 porter og en i 5v? : s

 

kan nevne at jeg har kobblet det i 11,12,13 og jord. så den røde lyser rødt, men vil ikke lyse noen andre farger

Endret av Formula90
Lenke til kommentar

Det som er litt tricky med sånne RGB-dioder, er slik jeg har skjønt at det kun kan lyse en av de tre diodene inni der på samme tid, Så skal man blande egne farger, så må man lage program som kjører en og en diode i PWM, slik at de lyser raskt etter hverandre og lager fargen du vil ha.

 

 

EDIT:

 

Jeg holder på med ett lite prosjekt her, jeg skal lage tomgangsregulering til bilen, eller, i det minste prøve.

 

Til nå har jeg fått snekra sammen drivkrets til ventil som skal styres.

 

Det jeg nå mangler, er signal inn til arduino, samt litt kode.

Endret av Puke Nukem
Lenke til kommentar

... den ene er merket R, andre er merket G, tredje er merket B, og den fjerde er merket +? skal det ikke være en som er minus egentlig? skal vel ikke kobble den i 3 porter og en i 5v? : s

 

kan nevne at jeg har kobblet det i 11,12,13 og jord. så den røde lyser rødt, men vil ikke lyse noen andre farger

 

Jeg vil nok tru at + skal kobles til positiv spenning ja. Om dette er 5V i dette tilfellet eller en annen spenning kan jeg ikke si sikkert. R, G og B skal kobles til "noe" som trekker strøm igjennom diodene. Å koble rett til pinner på en Arduino kan virke, men trenger ikke å virke, og kan i verste tilfelle ødelegge LEDene. Dette kommer an på om det er noen motstander der sammen med LEDene allerede eller ikke (vil anta at det er det siden det er flere LEDs, så bør gå bra).

Lenke til kommentar

Høres ut som en RGB-sak med felles anode.

Dvs. at du skal koble + til +spenning og R,G og B til 0v via seriemotstand hvis du ikke har en strømbegrensende krets.

 

Hvis du vil ha andre farger enn hvit, så må du dempe en eller flere av fargene enten Rød Grønn eller Blå. Dette kan gjøres med pulsviddemodulering (pwm)

 

En utgang fra arduinoen kan max belastes med 20mA, selv dette er i grenseland.

Kjør via tre transistorer, så slipper du å være redd for utgangene dine.

Endret av aop9020
Lenke til kommentar

ja er ferdig monterte motstander på. denne skal egenlig ha 12v, så 5v vart litt lite, kan jeg gi dem en alternativ strømkilde, å la arduinoen styre lysene?

 

bruk en transistor og koble sammen jord fra spenningskilde

hvis du kobler en strømforsyning til arduinoen via 2,1mm plugen, vil du kunne koble deg på Vin-pinnen og til en utgangs-pin.

 

1029315.jpeg

Lenke til kommentar

Hei

 

har en lcd-skjerm, og noen knapper, der jeg har laget til en slags meny for å styre utganger, og vise hva jeg slår på/av, men jeg har litt problemer med auto-funksjonen jeg prøver å lage...

 

her er deler av koden:

 

// feedback to have auto on
const byte ftrunk = 7; 
const byte fbacklight = 5;
const byte fxlight = 3;

// menu
byte updateit = 10;  // update the lcd
byte menu = 0;       // menu level 
int scrolling = 0;   // scroll between the firmware text 
int sysdelay = 50;   // delay for update freq.

// outputs
byte xlight = 2;      
byte backlight = 4;       
byte trunk = 6;     


// modes for menu, Standard output

// 0 - off, 1 - on, 2 - auto
byte mode0 = 0;
byte mode1 = 2;
byte mode2 = 2;
byte mode3 = 2;
byte mode4 = 0;
byte mode5 = 0;
byte mode6 = 1;

void Setup()
// feedback pin
pinMode(fbacklight, INPUT);  digitalWrite(fbacklight, LOW);
pinMode(backlight, OUTPUT); // light

void out()

 if (mode2 == 0){
   digitalWrite (backlight, LOW);
 }
 if (mode2 == 1){
   digitalWrite (backlight, HIGH);
 }
 if (mode2 == 2){
   if (fbacklight == HIGH){
     digitalWrite (backlight, HIGH);
   }
   if (fbacklight == LOW){
     digitalWrite (backlight, LOW);
   }
 }


 

det som er problemet, er at når jeg slår av eller på, funker det fint. men når jeg setter den til auto, er den konstant på, uansett om inputen er høy eller lav...

 

noen som ser om jeg har gjort noen feil?

 

ingen?

Lenke til kommentar

trodde arduinoen hadde 9v utgang, men hadde ikke det, så brukte 9v batterie å fikk det til å funke = ) takk for hjelp = )

 

vil bare nevne noe jeg lurer på, jeg har kopiert en kode. når jeg setter alt på 0(under void loop der), skal ikke alle lys være av da? for lyser konstant rødt, prøve å få blå fargen uten å lykkes

 

 

// color swirl! connect an RGB LED to the PWM pins as indicated

// in the #defines

// public domain, enjoy!

 

#define REDPIN 5

#define GREENPIN 6

#define BLUEPIN 3

 

#define FADESPEED 5 // make this higher to slow down

 

void setup() {

pinMode(REDPIN, OUTPUT);

pinMode(GREENPIN, OUTPUT);

pinMode(BLUEPIN, OUTPUT);

}

 

 

void loop() {

int r, g, b;

 

// fade from blue to violet

for (r = 0; r < 256; r++) {

analogWrite(REDPIN, r);

delay(FADESPEED);

}

// fade from violet to red

for (b = 255; b > 0; b--) {

analogWrite(BLUEPIN, b);

delay(FADESPEED);

}

// fade from red to yellow

for (g = 0; g < 256; g++) {

analogWrite(GREENPIN, g);

delay(FADESPEED);

}

// fade from yellow to green

for (r = 255; r > 0; r--) {

analogWrite(REDPIN, r);

delay(FADESPEED);

}

// fade from green to teal

for (b = 0; b < 256; b++) {

analogWrite(BLUEPIN, b);

delay(FADESPEED);

}

// fade from teal to blue

for (g = 255; g > 0; g--) {

analogWrite(GREENPIN, g);

delay(FADESPEED);

}

}

post-255998-0-54586700-1321647878_thumb.jpg

Endret av Formula90
Lenke til kommentar

 

ingen?

Du må nesten forklare litt hva du har tenkt. Først så setter du fbacklight til en input, og så skriver du til den?

(Er fbacklight definert, forresten?)

 

det som er problemet, er at når jeg slår av eller på, funker det fint. men når jeg setter den til auto, er den konstant på, uansett om inputen er høy eller lav...

 

dvs: (Psuedokode)

void setup();

// definere input

void loop();

// gå igjennom meny

if menu6 == auto { 
//sjekk input
if input == HIGH{
 digitalWrite(lys, HIGH) 
if input == low {
 digitalWrite(lys, LOW)

 

men når jeg trykker opp i menyen, går jeg fra "av" til "på". neste trykk er fra "på" til "auto", men når inputen er lav (av) er utgangen fortsatt høy. (i automodus)

Endret av haavardgj
Lenke til kommentar

Prosjekt:

 

Har ratt fjernstyring for original stereo anlegg i bilen, har byttet stereo og vil fremdeles kunne bruke fjernstyringen. (Ja, det er en Laguna, men den var gratis......)

 

Mulig løsning:

Skal dekode signalene fra fjern styringen, har ikke begynt på den biten ennå, tar den etterhvert. så skal en IR diode styre anlegget som kommer med fjernkontroll.

 

Så det jeg trenger i første omgang er å dekode IR signalet fra fjernkontrollen og få arduinoen til å gjenskape de signalene jeg trenger.

 

Noen forslag på hvordan jeg få dekodet signalet, helst ved hjelp av arduinoen???

 

EDIT:

Her var mye bra.... Må bare finne en passende ir mottaker, den jeg hadde var ikke brukende

 

http://www.ladyada.net/learn/sensors/ir.html

Endret av Behydro
Lenke til kommentar

Prosjekt:

 

Har ratt fjernstyring for original stereo anlegg i bilen, har byttet stereo og vil fremdeles kunne bruke fjernstyringen. (Ja, det er en Laguna, men den var gratis......)

 

Mulig løsning:

Skal dekode signalene fra fjern styringen, har ikke begynt på den biten ennå, tar den etterhvert. så skal en IR diode styre anlegget som kommer med fjernkontroll.

 

Så det jeg trenger i første omgang er å dekode IR signalet fra fjernkontrollen og få arduinoen til å gjenskape de signalene jeg trenger.

 

Noen forslag på hvordan jeg få dekodet signalet, helst ved hjelp av arduinoen???

 

EDIT:

Her var mye bra.... Må bare finne en passende ir mottaker, den jeg hadde var ikke brukende

 

http://www.ladyada.net/learn/sensors/ir.html

 

mulig du kan lage deg et program som leser høy/lav legger det i en streng, og printer den seriellt

 

bare en tanke.. :thumbup:

Lenke til kommentar

Noen som kan forklare meg koden litt? jeg har kobbla opp 2 shift registere, lett å kobble alt opp, siden jeg ikke er så go på c kode, så fant jeg en kode jeg kopierte, men sjønner ikke koden, noen som kan forklare mere va som sjer? og hvordan endere jeg lysene vis jeg vil det? forfor oppfører lysene seg som de gjør nå?

 

Her er koden:

 

 

/*

Shift Register Example

for two 74HC595 shift registers

 

This sketch turns on each of the LEDs attached to two 74HC595 shift registers,

in sequence from output 0 to output 15.

 

Hardware:

* 2 74HC595 shift register attached to pins 2, 3, and 4 of the Arduino,

as detailed below.

* LEDs attached to each of the outputs of the shift register

 

Created 22 May 2009

Modified 23 Mar 2010

by Tom Igoe

 

*/

 

//Pin connected to latch pin (ST_CP) of 74HC595

const int latchPin = 8;

//Pin connected to clock pin (SH_CP) of 74HC595

const int clockPin = 12;

////Pin connected to Data in (DS) of 74HC595

const int dataPin = 11;

 

char inputString[2];

 

void setup() {

//set pins to output because they are addressed in the main loop

pinMode(latchPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

Serial.begin(9600);

Serial.println("reset");

}

 

void loop() {

// iterate over the 16 outputs of the two shift registers

for (int thisLed = 0; thisLed < 16; thisLed++) {

// write data to the shift registers:

registerWrite(thisLed, HIGH);

// if this is not the first LED, turn off the previous LED:

if (thisLed > 0) {

registerWrite(thisLed - 1, LOW);

}

// if this is the first LED, turn off the highest LED:

else {

registerWrite(15, LOW);

}

// pause between LEDs:

delay(250);

}

 

}

 

// This method sends bits to the shift registers:

 

void registerWrite(int whichPin, int whichState) {

// the bits you want to send. Use an unsigned int,

// so you can use all 16 bits:

unsigned int bitsToSend = 0;

 

 

// turn off the output so the pins don't light up

// while you're shifting bits:

digitalWrite(latchPin, LOW);

 

// turn on the next highest bit in bitsToSend:

bitWrite(bitsToSend, whichPin, whichState);

 

// break the bits into two bytes, one for

// the first register and one for the second:

byte registerOne = highByte(bitsToSend);

byte registerTwo = lowByte(bitsToSend);

 

// shift the bytes out:

shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);

shiftOut(dataPin, clockPin, MSBFIRST, registerOne);

 

// turn on the output so the LEDs can light up:

digitalWrite(latchPin, HIGH);

}

post-255998-0-33436200-1322493953_thumb.gif

Lenke til kommentar
  • 3 uker senere...

Nå holder jeg på en tempratur sensor, har kobblet den og 6 led lys til arduinoen, når temperaturn er over 30c så skal den røde lyse, mellom 20 og 29c så skal de gule lyse, og under der så skal de blåe led lysene lyse. burde jo ikke være så vanskelig skulle jeg tro? har koblet sensoren i pin 0, og led lysene i pin 2,3,4,5,6 og 7. jeg bruker denne koden som utangspunkt:

 

/* ---------------------------------------------------------

* | Arduino Experimentation Kit Example Code |

* | CIRC-10 .: Temperature :. (TMP36 Temperature Sensor) |

* ---------------------------------------------------------

*

* A simple program to output the current temperature to the IDE's debug window

*

* For more details on this circuit: http://tinyurl.com/c89tvd

*/

 

//TMP36 Pin Variables

int temperaturePin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to

//the resolution is 10 mV / degree centigrade

//(500 mV offset) to make negative temperatures an option

 

/*

* setup() - this function runs once when you turn your Arduino on

* We initialize the serial connection with the computer

*/

void setup()

{

Serial.begin(9600); //Start the serial connection with the copmuter

//to view the result open the serial monitor

//last button beneath the file bar (looks like a box with an antenae)

}

 

void loop() // run over and over again

{

float temperature = getVoltage(temperaturePin); //getting the voltage reading from the temperature sensor

temperature = (temperature - .5) * 100; //converting from 10 mv per degree wit 500 mV offset

//to degrees ((volatge - 500mV) times 100)

Serial.println(temperature); //printing the result

delay(1000); //waiting a second

}

 

/*

* getVoltage() - returns the voltage on the analog input defined by

* pin

*/

float getVoltage(int pin){

return (analogRead(pin) * .004882814); //converting from a 0 to 1024 digital range

// to 0 to 5 volts (each 1 reading equals ~ 5 millivolts

 

Noen som kan hjelpe?

}

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