DIY TV LCD skärm med Arduino och Smart fjärrkontroll (4 / 5 steg)

Steg 4: Gör kodning och ansluta Smart fjärrkontrollen




Nästa steg är tekniskt svårast, kodning. Läsa inte all kod här, denna kod är kod språk C, få en miljö att programmera en styrelse med mottagare som tar emot vågorna från smarta fjärrkontrollen, jag har en smart fjärr form och Osepp kit och den är kompatibel med arduino. Kopiera denna kod på din miljö och programmera den till arduino eller styrelsen som är ansluten till en LCD-skärm/TV.

/****************************************************************************

LCD-AVR-4d.c - en HD44780U baserade LCD med en Atmel ATmega processor Copyright (C) 2013 Donald Weiman (weimandn programmet är fri programvara: du kan vidaredistribuera det och/eller modifiera det i enlighet med GNU General Public License som offentliggörs av Free Software Foundation, antingen version 3 av licensen, eller (vid ditt alternativ) någon senare version. Detta program är distribuerat med förhoppning att det kommer att vara användbart men helt utan garantier; utan att ens underförstådd garanti om SÄLJBARHET eller lämplighet för ett visst ändamål. Se GNU General Public License för mer detaljer. Du bör ha fått en kopia av GNU General Public License tillsammans med detta program. Om inte, se. * / / *** Fil: LCD-AVR-4d.c datum: den 16 September, 2013 Target: ATmega328 kompilator: avr-gcc (AVR Studio 6) författare: Donald Weiman Summary: 4-bitars data gränssnitt, upptagen flaggan inte genomförs. Alla LCD pin kan anslutas till en ledig I/O port. Innehåller en enkel skriva sträng rutin. * / / *** Programmet anteckningar *** detta program använder ett gränssnitt för 4-bitars men använder inte flaggan upptagen för att avgöra när LCD-controller är klar. LCD-RW linjen (pin 5) inte är ansluten till upp och det måste vara ansluten till jord för att programmet ska fungera. Alla tidsfördröjningar är längre än de som anges i de flesta datablad för att rymma långsammare än normal LCD-moduler. Detta krav är väl dokumenterade men nästan alltid ignoreras. Informationen anges i en fotnot längst ner i högra (körningstid) kolumnen Instruktion. De fyra data linjerna samt två kontroll linjer kan genomföras på alla tillgängliga I/O stift i någon hamn. Dessa är de anslutningar som används för det här programmet:------| ATmega328 || LCD | | | | | | PD7|---------------->| D7 || PD6|---------------->| D6 || PD5|---------------->| D5 || PD4|---------------->| D4 | | | | D3 | | | | D2 | | | | D1 | | | | D0 | | | | | | PB1|---------------->| E | | | GND---> |RW || PB0|---------------->| RS | ----------- ---------- **************************************************************************/

#define F_CPU 16000000UL

#include #include

LCD-gränssnitt (bör håller med diagrammet ovan) / / kontrollera att LCD-RW PIN-koden är kopplad till GND #define lcd_D7_port PORTD / / lcd D7 anslutning #define lcd_D7_bit PORTD7 #define lcd_D7_ddr DDRD

#define lcd_D6_port PORTD / / lcd D6 anslutning #define lcd_D6_bit PORTD6 #define lcd_D6_ddr DDRD

#define lcd_D5_port PORTD / / lcd D5 anslutning #define lcd_D5_bit PORTD5 #define lcd_D5_ddr DDRD

#define lcd_D4_port PORTD / / lcd D4 anslutning #define lcd_D4_bit PORTD4 #define lcd_D4_ddr DDRD

#define lcd_E_port PORTB / / lcd aktivera pin-#define lcd_E_bit PORTB1 #define lcd_E_ddr DDRB

#define lcd_RS_port PORTB / / lcd registrera dig väljer du pin #define lcd_RS_bit PORTB0 #define lcd_RS_ddr DDRB

LCD modul information #define lcd_LineOne 0x00 / / start av linje 1 #define lcd_LineTwo 0x40 / / start av linje 2 //#define lcd_LineThree 0x14 / / start av linje 3 (20 x 4) //#define lcd_lineFour 0x54 / / start av linje 4 (20 x 4) //#define lcd_LineThree 0x10 / / start av linje 3 (16 x 4) //#define lcd_lineFour 0x50 / / start av linje 4 (16 x 4)

LCD instruktioner #define lcd_Clear 0b00000001 / / byta ut alla tecken med ASCII "utrymme" #define lcd_Home 0b00000010 / / tillbaka markören till första position på första raden #define lcd_EntryMode 0b00000110 / / flytta markören från vänster till höger på läsa/skriva #define lcd_DisplayOff 0b00001000 / / slå skärm #define lcd_DisplayOn 0b00001100 / / visar på markören bort, inte blinka karaktär #define lcd_FunctionReset 0b00110000 / / reset LCD #define lcd_FunctionSet4bit 0b00101000 / / 4-bitars data , 2-raders display, 5 x 7 teckensnitt #define lcd_SetCursor 0b10000000 / / ställa in markörens position

Programmera ID uint8_t program_author [] = "Donald Weiman"; uint8_t program_version [] = "LCD-AVR - 4 d (gcc)"; uint8_t program_date [] = "Sep 16, 2013";

Funktionen prototyper void lcd_write_4(uint8_t); void lcd_write_instruction_4d(uint8_t); void lcd_write_character_4d(uint8_t); void lcd_write_string_4d(uint8_t *); void lcd_init_4d(void);

/ *** Main programkod *** / int main(void) {/ / configure mikroprocessor stiften för data linjer lcd_D7_ddr | = (1 <

Konfigurera mikroprocessor stiften för kontroll linjer lcd_E_ddr | = (1 <

initiera LCD controller som bestäms av den definierar (LCD instruktioner) lcd_init_4d(); initiera LCD-skärmen för en 4-bitars gränssnitt

Visa den första raden i information lcd_write_string_4d(program_author);

Ställ markören för att börja på andra raden lcd_write_instruction_4d(lcd_SetCursor | lcd_LineTwo); _delay_us(80); 40 uS fördröja (min)

Visa den andra raden med information lcd_write_string_4d(program_version);

oändlig loop while(1); Return 0; } / *** Slutet av programmets kod ***

* === 4-bitars LCD funktioner === * / / * namn: lcd_init_4d syfte: initiera LCD-modulen för ett gränssnitt för 4-bitars data träder: likställer (LCD instruktioner) inrättats för önskad åtgärd Exit: inga parametrar anteckningar: bruk tiden förseningar i stället för att kontrollera flaggan upptagen * / void lcd_init_4d(void) {/ / Power-up fördröjning _delay_ms(100); / / inledande 40 ms fördröjning

VIKTIGT - på denna punkt LCD-modulen är i 8-bitars läge och det förväntar sig att få / / 8 databitar, en bit på varje av dess 8 data linjer, varje gång den "E" linjen är pulsade. / / Eftersom LCD-modulen är kopplat för 4-bitars läge, endast de övre fyra data linjerna är anslutna till / / mikroprocessorn och lägre fyra data linjer lämnas normalt öppna. Därför, när / / "E" linjen är pulsade, LCD controller kommer att läsa oavsett data har satts upp på övre / / fyra data linjer och lägre fyra data linjer kommer att vara hög (på grund av interna pull-up kretsar). / / Lyckligtvis instruktionen "FunctionReset" inte bryr sig om vad som är på lägre fyra bitar så / / denna instruktion kan skickas på bara fyra tillgängliga data linjer och det kommer att tolkas / / ordentligt av LCD-controller. 'Lcd_write_4' subrutin kommer att åstadkomma detta om den / / kontrollera fodrar tidigare har konfigurerats korrekt.

Ställ in raderna RS och E för 'lcd_write_4' subrutin. lcd_RS_port & = ~(1<

Återställa LCD controller lcd_write_4(lcd_FunctionReset); första delen av reset sekvens _delay_ms(10); 4.1 mS fördröjning (min)

lcd_write_4(lcd_FunctionReset); andra delen av reset sekvens _delay_us(200); 100uS fördröjning (min)

lcd_write_4(lcd_FunctionReset); tredje delen av reset sekvens _delay_us(200); denna försening utelämnas i databladet

Preliminära funktionen in instruktion - används enbart för att ange 4-bitars läge. Antalet rader eller teckensnitt kan inte ställas in på denna tid eftersom registeransvarige är fortfarande i den / / 8-bitars läge, men det dataöverföring-läget kan ändras eftersom denna parameter avgörs av en / / övre fyra bitar av undervisningen. lcd_write_4(lcd_FunctionSet4bit); Ange 4-bitars läge _delay_us(80); 40uS fördröjning (min)

Funktionen Ange instruktion lcd_write_instruction_4d(lcd_FunctionSet4bit); Ange läge, linjer och teckensnitt _delay_us(80); 40uS fördröjning (min)

Nästa tre instruktionerna anges i databladet som en del av initieringsrutinen / / så är det en bra idé (men troligen inte nödvändigt) att göra dem bara som anges och sedan göra om dem / / senare om programmet kräver en annan konfiguration.

Visa på/av kontroll instruktion lcd_write_instruction_4d(lcd_DisplayOff); slå display OFF _delay_us(80); 40uS fördröjning (min)

Tydlig Display instruktion lcd_write_instruction_4d(lcd_Clear); tydlig display RAM _delay_ms(4); 1.64 mS fördröjning (min)

// ; Posten inställt instruktion lcd_write_instruction_4d(lcd_EntryMode); Ange önskat SKIFT egenskaper _delay_us(80); 40uS fördröjning (min)

Detta är slutet av LCD controller initiering som anges i databladet, men displayen / / har lämnats i skick som OFF. Detta är en bra tid att vända visningen tillbaka ON. Visa på/av kontroll instruktion lcd_write_instruction_4d(lcd_DisplayOn); slå display ON _delay_us(80); 40uS fördröjning (min)}

/*........................................................................... Namn: lcd_write_string_4d; Syfte: Visa en sträng med tecken på posten LCD: (theString) är strängen ska visas Exit: inga parametrar anteckningar: bruk tiden förseningar i stället för att kontrollera flaggan upptagen * / void lcd_write_string_4d (uint8_t theString[]) {flyktiga int i = 0; / / karaktär counter * / medan (theString [i]! = 0) {lcd_write_character_4d(theString[i]); i ++; _delay_us(80); / / 40 uS fördröjning (min)}}

/*........................................................................... Namn: lcd_write_character_4d syfte: skicka en byte av uppgifter till registret LCD data träder: (resultaten) är informationen som ska skickas till data registrera Exit: inga parametrar anteckningar: behandlar inte RW (upptagen flagga är inte implementerat) * /

void lcd_write_character_4d(uint8_t theData) {lcd_RS_port | = (1 <

/*........................................................................... Namn: lcd_write_instruction_4d syfte: skicka en byte av information till LCD instruktion registret post: (theInstruction) är informationen som ska skickas till den instruktion registret Exit: inga parametrar anteckningar: behandlar inte RW (upptagen flagga är inte implementerat) * / void lcd_write_instruction_4d(uint8_t theInstruction) {lcd_RS_port & = ~(1<

/*........................................................................... Namn: lcd_write_4 syfte: skicka en byte av information till LCD-modulen posten: (theByte) är informationen som ska skickas till önskad LCD registret RS är konfigurerad för önskad LCD registret E är låg RW är låg Exit: inga parametrar anteckningar: använda tidsfördröjningar eller upptagen flaggan * / void lcd_write_4(uint8_t theByte) {lcd_D7_port & = ~(1<

lcd_D6_port & = ~(1<

lcd_D5_port & = ~(1<

lcd_D4_port & = ~(1<

skriva data / / "Adress ställtid" (40 nS) lcd_E_port | = (1 <

Nästa sak du kan göra är valfritt, du kan ansluta din smartphone eller Samsung till arduino, detta är ganska svårt att göra, men du kan ladda ner en app och har här koden från IR-fjärrkontroll med app och anpassa den.

Se Steg
Relaterade Ämnen

DIY virtuell verklighet Skateboard erfarenhet med Arduino och Google kartong

Detta är ett riktigt roligt och enkelt projekt som kan göras ungefär en timme. På botten av skateboard är en accelerometer/gyro med en Arduino ombord som överför kantiga rörelse i styrelsen via bluetooth till en liten virtuell verklighet spel jag gjo...

Säkerhetssystem och tillgång kontroll med Arduino och RFID-

säkerhetssystem och tillgång kontroll med Arduino och RFIDDetta projekt är en evolotuin av mitt första projekt kallat "Arduino - Security System och Access Control"Som ni kan se på bloggen http://arduinobymyself.blogspot.com.br/2012/03/arduino-s...

Multiplexering med Arduino och 74HC595

74HC595 är en lätt och billig (på cirka 60 cent styck) sätt att öka antalet digitala ut stiften på din Arduino. I denna tutorial ska jag visa dig hur man kör upp till 16 lysdioder med en 74HC595 med hjälp av en teknik som kallas multiplexing. I slutä...

Mugg musik: Förvandla vatten till ett Instrument med Arduino och ChucK

Vad händer om du slå alla ledande yta till ett instrument? Gillar, säga... en mugg vatten? Bäst av allt, är det billigt; du behöver bara $1 värt extra elektriska komponenter (inte inklusive Arduino).För detta projekt, min vän skörd och jag kombinerad...

Hur använder gamla Stepper Motors med Arduino och A4988 Driver

Jag har varit med stegmotorer ett tag nu, och de är fantastiska för alla typer av robotic projekt.Idag kommer jag att dela de saker jag har lärt mig hittills om återanvända gamla stegmotorer bärgades från skrivare. Identifiera stegmotorerStegmotorer...

Power övervakning med Arduino och logga in i Google blad

Sedan senaste veckorna tänkte jag på att göra ett projekt som kan hjälpa mig att hålla ett spår på min dagliga energi användningsområden. I detta projekt använder jag en 30A övervakning styrelse. denna styrelse har 6 strömsensor som kan läsa upp till...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

Kontroll av en DC motor med Arduino och Visual Basic

Hej vänner detta är mitt första inlägg i instructables.com där jag kommer att försöka ge mer nyhet des ofta.Idag är temat med Arduino och Visual Basic.Det projekt som vi ser idag är controller en dc-motor med Arduino och Visual Basic.För att styra en...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Rörelseaktiverade ljus med Arduino och HC-SR04 sensor

Jag gjorde detta projekt för länge sedan att tända upp i köket när jag öppnar bakdörren.Tanken var när jag öppnar bakdörren, detta ljus som tänds under 15 sekunder och som ger mig tillräckligt med tid att nå strömbrytaren på den motsatta väggen. Före...

Kapacitans mätare med arduino och 555 timer

KAPACITANS MÄTARE MED ARDUINO OCH 555 TIMER CHIPDetta projekt syftar till att bygga en enkel kapacitans mätare, en enhet för att mäta kapacitans i nanoFarads och microFarad, med en räckvidd på ca 1 nanoFarad till hundratals microFarads.Detta projekt,...

Kontrollera en LED med arduino och Wifly sköld

För att visa hur du kan styra enheter via wifi med hjälp av arduino wifly shield, kommer jag slå på och av en LED genom att skicka en http-begäran från webbläsaren till wifly sköld.Krav:1. Arduino uno2. Wifly sköld3. ledde4. 220 ohm motstånd5. ett pa...

Hur man styr motorer med Arduino och RC mottagare i 10 minuter

Detta är min andra handledning på att kontrollera saker med Arduino och R/C-mottagare. Om du inte har tittat på min första tutorial jag föreslår att du tittar på det första, här: i den här guiden kommer vi att titta på hur man styr motorer också anvä...

Styra DC Motors(PC Fans) med Arduino och Relay board

I detta instructable kommer vi att se utan att gå in i detalj, hur man använder 12V DC motorer (PC Fans) med Arduino och relay board eBlockSteg 1: Konfigurera maskinvara och programvara För att göra det behöver vi viss maskinvara kan du hitta på Inte...

Kontrollerar ledde med Arduino och C#

Hej vänner detta är min första Arduino Tutorial på att kontrollera ett LED med Arduino och C#-program.Du behöverArduinoen1K ResistorLEDProgramvaraArduino programvara - www.arduino.ccMicrosoft visual C# / Visual StudioLED är ansluten till Pin 13.Titta...

Kontrollera en RGB ledde med Arduino och bearbetning

detta instructable (min första inte mindre) visar hur man styr en RGB ledde med bearbetning och arduino.Den viktiga funktionen att vara färg markeras genom att klicka på en bild, RGB-värdet för den pixel du klickar på bearbetas och skickas till den a...

Spela upp ljud på dator med arduino och progduino

Idag kommer jag visa dig hur lätt det är att bygga en enkel spelare och kör det på datorn med arduino och progduino.Läs mer om progduino: http://www.progduino.comSteg 1: Arduino kod - spelaren på din dator.Kopiera koden till din arduino redaktör.void...

Bänk PSU strömförsörjning från gamla ATX med Arduino och LCD-skärm

Hej alla och Välkommen till min första Instructable.Jag har alltid velat en bänk PSU för enkel åtkomst till en strömkälla, och något som jag kan lita på när du arbetar med olika projekt. Jag ville ha ett NÄTAGG som:• ger 12v och 5v 3.3V utgångar• ger...

Hemma termostat med Arduino och stora LCD

Ersätta en vanlig termostat (SIEMENS-RAA30 16GR) med en self made, arduino-baserad, stor LCD-skärm är ett roligt projekt.DISCLAIMER: Elnätet används båda styra ugnen och för arduino power så du inte går vidare om du inte är bekväm att arbeta med näts...