Raspberry Pi styr en tvåfärgad LED

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
cazz
Inlägg: 1024
Blev medlem: 11 maj 2009, 12:44:01
Ort: Småland

Raspberry Pi styr en tvåfärgad LED

Inlägg av cazz »

Ok detta känns som en enkel sak men får inte till det i mina tankar hur man bäst sätter upp det.
Det finns olika guider hur man med en tryck knapp kan tända och släcka en LED med en Raspberry Pi och Python.
Ex https://www.sunfounder.com/learn/super_ ... rrypi.html

Tanken är nu är att använda de tvåfärgad LED som jag har liggande att styra LED via knappen.
Så man tycker på knappen så lyser det rött och trycker man igen så lyser det grönt.

Rent basic men nu är det så de tvåfärgade LED jag har har en gemensam Anod (+) och var sin Kadod (-) och då måste man tänka om.
Hade det varit tvärtom så hade det varit enkelt men nu får jag inte riktigt till det hur jag ska koppla och programmera Python.

Jag ska även har totalt 4 st LED och 4 st knappar som sköter var sin knapp så det gäller har det i tankarna.
Användarvisningsbild
DeVille
Inlägg: 2361
Blev medlem: 29 mars 2004, 15:04:22
Ort: Dalsländska skogen.
Kontakt:

Re: Raspberry Pi styr en tvåfärgad LED

Inlägg av DeVille »

Om jag tolkat dig rätt så behöver du ha 2st utgångar per diod och en ingång per knapp.

Exempel:
Tryck på knapp A -> Aktivera utgång X (Lysdiod 1 lyser Rött)
Tryck på knapp A -> Deaktivera ytgång X + Aktivera utgång Y (Lysdiod 1 lyser Grönt)
Tryck på knapp A -> Deaktivera ytgång Y + Aktivera utgång X (Lysdiod 1 lyser Rött)


Upprepa för andra knappar och utgångar.

/DeVille
Användarvisningsbild
Icecap
Inlägg: 26690
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Raspberry Pi styr en tvåfärgad LED

Inlägg av Icecap »

Det är en enkel sak och kan i grunden göras på en del sätt.

Vi utgår ifrån att knapparna är "debounced" och därmed ger tydliga signal.

Alternativ A: En räknare för varje knapp. Räknaren räknas upp med 1 för varje knapptryck och LED'na styrs efter det:
- 0: båda utgångar avaktiverade.
- 1: Ena utgången aktiverat, den andra avaktiverat.
- 2: Ena utgång avaktiverat, den andra aktiverat.
- 3: och alla värden över: räknaren nollställas.

Alternativ B: använder utgångarnas status för att gå vidare. OBS: Vid för hård belastning på en utgång kan detta sätt fallera!
- Vid tryck växlar man status på utgång A.
- Om utgång A nu är '0' OCH utgång B är '0' ska utgång B ställas till '1'.
I annat fall ska båda utgångar nollas.
Användarvisningsbild
cazz
Inlägg: 1024
Blev medlem: 11 maj 2009, 12:44:01
Ort: Småland

Re: Raspberry Pi styr en tvåfärgad LED

Inlägg av cazz »

Tack för era snabba svar och det ni skriver är helt rätt och det är den vägen jag tänker på.

Det jag liksom fastnad på är detta att exemplet som visas är simpel

Tryck på knappen och den skickar +3.3v till LED (via motstånd)
Tryck på knappen igen och den slutar skicka +3.3v.


Eftersom de LED jag har har en gemensam Anod och två olika Kadod så är det inte så enkelt.
Hade det varit tvärtom att den hade en gemensam Kadod och två olika Anod så hade jag bara satt Kadod i minus och sedan skicka ström antingen till den ena eller andra Anod.

Det är det som jag fastnar lite på.
limpan4all
Inlägg: 8477
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Raspberry Pi styr en tvåfärgad LED

Inlägg av limpan4all »

De flesta utgångar driver bättre mot jord/nollvolt. Bara att koppla ett motstånd mellan I/O pinnen och kathoden (två motstånd). Sedan lägga anoden till samma spänning som I/O pinnen har som sin höga nivå (och hoppas att den är tillräckligt hög för att lysdioden skall lysa). Tänk på att du får negativ logik på I/O pinnen nolla tänder lysdioden etta släcker lysdioden.
Användarvisningsbild
Icecap
Inlägg: 26690
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Raspberry Pi styr en tvåfärgad LED

Inlägg av Icecap »

Grejen är att det är i grunden likgiltigt om det är en '1' eller en '0' som tänder en LED - och det var därför att jag skrev 'aktivera' hhv. 'avaktivera'.

Rent programmässigt är det likgiltigt om du skriver att en pinne ska ställas till '1' istället för '0' eller motsatt, det viktiga är att de ställs rätt.

Själv har jag ett antal gångar skapad ett par definitioner:
#define TURN_ON false
#define TURN_OFF true

I programmet anger jag sedan:
pin = TURN_ON; eller
pin = TURN_OFF;

Skulle jag komma fram till att jag vill koppla en transistor som inverterande drivsteg kan jag enkelt ändra definitionen till de motsatta värden och saken är biff.

Och programförståelsen är enklare när man skriver programrader typ:
Pin_LED_Green = TURN_ON;
Pin_LED_Red = Turn_Off;

Det är rimligt enkelt att fatta vad de gör helt enkelt.
Skriv svar