- Material som krävs:
- Kretsschema:
- Programmeringsförklaring:
- Hårdvaruinställning för blinkande LED-sekvens:
- Ladda upp och arbeta:
Detta är den andra självstudien i en sekvens av handledning där vi lär oss MSP430G2 LaunchPad från Texas Instruments med Energia IDE. I den senaste Blinky LED-handboken introducerade vi oss själva till LaunchPad Development Board och Energia IDE, vi laddade också upp vårt första program som är att blinka den inbyggda LED-enheten med jämna mellanrum.
I den här handledningen lär vi oss hur man använder alternativet Digital Läs och Digital Skriv för att läsa status för en inmatningsenhet som en omkopplare, och styra flera utgångar som lysdioder. I slutet av denna handledning skulle du ha lärt dig att arbeta med digitala ingångar och utgångar, som kan användas för att koppla ihop många digitala sensorer som IR-sensor, PIR-sensor etc. och även för att slå på eller av utgångar som LED, summer etc. Låter intressant rätt!!? Låt oss börja.
Material som krävs:
- MSP430G2 LaunchPad
- LED i vilken färg som helst - 8
- Strömbrytare - 2
- 1k motstånd - 8
- Anslutande ledningar
Kretsschema:
I vår tidigare handledning märkte vi att själva startplattan har två lysdioder och en brytare på brädet. Men i denna handledning kommer vi att behöva mer än så, eftersom vi planerar att lysa åtta LED-lampor i en sekvens när en knapp trycks in. Vi kommer också att ändra sekvensen när du trycker på en annan knapp bara för att göra den intressant. Så vi måste bygga en krets med 8 LED-lampor och två brytare, det fullständiga kretsschemat finns nedan.
Här är de 8 lysdioderna utgångarna och de två omkopplarna är ingångarna. Vi kan ansluta dessa till valfri I / O-stift på kortet, men jag har anslutit LRD: erna från stift P1.0 till P2.1 och växlar 1 och 2 till stift P2.4 respektive P2.3 som visas ovan.
Alla katodstiften på lysdioden är bundna till jord och anodstiftet är anslutet till I / O-stiften genom ett motstånd. Detta motstånd kallas ett strömbegränsande motstånd, det här motståndet är inte obligatoriskt för en MSP430 eftersom den maximala strömmen som det är I / O-stift kan källa är bara 6mA och spänningen på stiftet är endast 3,6V. Det är dock bra att använda dem. När någon av dessa digitala stift går högt tänds respektive LED. Om du kan komma ihåg det senaste tutorials LED-programmet kommer du ihåg att digitalWrite (LED_pin_name, HIGH) kommer att göra att LED- lampan lyser och digitalWrite (LED_pin_name, LOW) kommer att lysa på LED-lampan .
Strömställarna är ingångsenheten, den ena änden av omkopplaren är ansluten till jordterminalen och den andra är ansluten till digitala stift P2.3 och P2.4. Detta innebär att varje gång vi trycker på omkopplaren kommer I / O-stiftet (2.3 eller 2.4) att jordas och kommer att vara ledigt om knappen inte trycks in. Låt oss se hur vi kan använda detta arrangemang när vi programmerar.
Programmeringsförklaring:
Programmet måste skrivas för att styra 8-lysdioden på ett sekventivt sätt när omkopplaren 1 trycks in och sedan när omkopplaren 2 trycks ned måste sekvensen ändras. Den kompletta program och demonstrationsvideo finns längst ner på denna sida. Längre nedan kommer jag att förklara programmet rad för rad så att du lätt kan förstå det.
Som alltid bör vi börja med funktionen tomrumsinställning () där vi skulle förklara stiften som vi använder är ingångs- eller utgångsstift. I vårt program matas de 8 LED-stiften ut och de två omkopplarna är ingångar. Dessa 8 lysdioder är anslutna från P1.0 till P2.1 som är stift nummer 2 till 9 på kortet. Därefter är omkopplarna anslutna till stift P2.3 och Stift 2.4 vilket är stift nummer 11 respektive 12. Så vi har förklarat följande i ogiltig installation ()
ogiltig installation () {för (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } för (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Som vi vet förklarar pinMode () -funktionen att pin ska matas ut eller in och digitalWrite () -funktionen gör den hög (ON) eller low (OFF). Vi har använt en for loop för att göra denna deklaration för att minska antalet för linjer. Variabeln "i" ökas från 2 till 9 i for- slingan och för varje inkrement kommer funktionen inuti att utföras. En annan sak som kan förvirra dig är termen " INPUT_PULLUP ". En stift kan deklareras som ingång genom att bara ringa funktionen pinMode (Pin_name, INPUT) men här har vi använt en INPUT_PULLUP istället för en INPUT och de har båda en märkbar förändring.
När vi använder några mikrocontrollerstift måste stiftet antingen anslutas till lågt eller högt. I detta fall är stiftet 11 och 12 ansluten till omkopplaren som kommer att anslutas till jord när den trycks in. Men när man inte trycker på strömbrytaren är stiftet inte anslutet till någonting detta tillstånd kallas en flytande stift och det är dåligt för mikrokontroller. Så för att undvika detta använder vi antingen ett upp- eller nedåtriktat motstånd för att hålla stiftet i ett tillstånd när det kommer i flytande läge. I MSP430G2553 Microcontroller har I / O-stiften ett inbyggt motstånd. För att använda allt vi behöver göra är att ringa INPUT_PULLUP istället för INPUT under deklarationen precis som vi har gjort ovan.
Låt oss nu gå in i funktionen void loop () . Vad som än står skrivet i den här funktionen kommer att köras för alltid. Det första steget i vårt program är att kontrollera om man trycker på omkopplaren och om man trycker på den bör vi börja blinka lysdioderna i sekvens. För att kontrollera om knappen trycks in används följande rad
om (digitalRead (12) == LOW)
Här är den nya funktionen digitalRead () -funktionen, den här funktionen läser status för en digital stift och kommer att returnera HÖG (1) när stiftet får lite spänning och kommer att returnera lågt LÅG (0) när stiftet är jordat. I vår hårdvara kommer stiftet att jordas först när vi trycker på knappen annars är det högt eftersom vi har använt ett uppdragningsmotstånd. Så vi använder if- uttalandet för att kontrollera om knappen trycktes in.
När du väl har tryckt på knappen kommer vi in i det oändliga medan (1) slingan. Det är här vi börjar blinka lysdioderna i sekvens. En oändlig stund-loop visas nedan och vad som helst som skrivs inuti loop kommer att springa för evigt till ett avbrott; uttalande används.
whiel (1) {}
Inuti det oändliga medan vi kontrollerar status för den andra omkopplaren som är ansluten till stift 11.
Om du trycker på denna omkopplare blinkar vi LED-lampan i en viss sekvens, annars blinkar vi den i en annan sekvens.
om (digitalRead (11) == LOW) {för (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); fördröjning (100); } för (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
För att blinka lysdioden i följd använder vi återigen for- slingan, men den här gången använder vi en liten fördröjning på 100 millisekunder med hjälp av fördröjningsfunktionen (100) så att vi märker att lysdioden blir hög. För att bara få en LED att lysa åt gången använder vi också en annan för loop för att stänga av all LED. Så vi slår på en ledd väntan en tid och stänger sedan av all lysdiod, sedan ökar räkningen. Slå på lysdioden vänta en stund och cykeln fortsätter. Men allt detta kommer att hända så länge den andra omkopplaren inte trycks ned.
Om den andra omkopplaren trycks in ändrar vi sekvensen, programmet kommer att vara ungefär samma förväntade för den sekvens som lysdioden tänds för. Raderna visas nedan, försök ta en titt och ta reda på vad som har ändrats.
annars {för (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); fördröjning (100); } för (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Ja, for- loop har ändrats. Tidigare fick vi lysdioden att lysa från nummer 2 och hela vägen upp till 9. Men nu ska vi börja från nummer 9 och minska hela vägen ner till 2. På så sätt kan vi märka om strömbrytaren trycks ned eller inte.
Hårdvaruinställning för blinkande LED-sekvens:
Okej nog av all teori och mjukvarudel. Låt oss hämta några komponenter och se hur det här programmet ser ut i handling. Kretsen är väldigt enkel och kan därför enkelt byggas på en bräda. Men jag har lödt LED och slår på perf-kortet bara för att det ska se snyggt ut. Perf board som jag lödde visas nedan.
Som du ser har vi utgångsstiften på lysdioden och omkopplaren tagits ut som kontaktstift. Nu har vi använt kvinnliga till honkontaktledningar för att ansluta lysdioderna och växlar till ut MSP430 LaunchPad-kortet som visas på bilden nedan.
Ladda upp och arbeta:
När du är klar med hårdvaran ansluter du bara MSP430-kortet till din dator och öppnar Energia IDE och använder programmet som ges i slutet av denna sida. Se till att rätt kort och COM-port väljs i Energia IDE och klicka på uppladdningsknappen. Programmet ska sammanställas framgångsrikt och när uppladdningen är klar visas "Klar uppladdning".
Tryck nu på knapp 1 på tavlan och lysdioden ska tändas i följd enligt bilden nedan
Du kan också hålla den andra knappen för att kontrollera om sekvensen ändras. Hela arbetet med projektet visas i videon nedan. Om du är nöjd med resultaten kan du försöka göra några ändringar i koden som att ändra fördröjningstiden för att ändra sekvensen etc. Detta hjälper dig att lära dig och förstå bättre.
Hoppas att du har förstått handledningen och lärt dig något användbart med den. Om du har stött på något problem är du välkommen att skicka frågan i kommentarsektionen eller använda forumen. Låt oss träffas i en annan handledning där vi lär dig hur man läser analoga spänningar med vår MSP30-startplatta.