Bygga din egen Wifi-radion (9 / 14 steg)

Steg 9: kod



jag ska bara tillägga den fullständiga koden här. Det är lite rörigt eftersom jag inte hade någon tid för att rensa upp. När jag har städat upp (och förbättrade det), kommer jag lägga upp den nya koden. Jag ska också lägga till de bilder som jag använde så att du kan använda dem också.

När du programmera din Atmega, bör du också inaktivera JTAG i fusebits och ställa den interna oscillatorn till 8MHz.

Koden kommer att passa in i en Atmega16 men jag använde en Atmega32 som jag vill lägga till några extra funktioner senare.

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Config Serialin = buffrat, storlek = 255
Config Serialout = buffrat, storlek = 100
Config Graphlcd = 240 * 128, Dataport = Porta, Controlport = Portc, Ce = 5, Cd = 4, Wr = 7, Rd = 6, återställa = 2, Fs = 3, Mode = 8

Config Scl = Portc.0
Config Sda = Portc.1

Cha Alias Pind.3
CHB Alias Pind.4

Config Cha = ingång
Config Chohung bank = ingång

CONST Ds1307w = & HD0 "skriva DS1307
CONST Ds1307r = & HD1 ' läsa ds1307
CONST Adsecs = & H00 ' adress sekunder
CONST Admins = & H01 ' adress minuter

Dim räknas som Byte
Dim jag som Byte
Dim J som Byte
Dim Pos som Byte
Dim Oldpos som Byte
Dim Maxpos som Byte
Dim staten som Byte
Dim volym som Byte
Dim Temp som Byte
Dim Uart_in som Byte
Dim Uart_buffer som Byte
Dim timmar som Byte
Dim Mins som Byte
Dim SEK som Byte
Dim längd som Byte
Dim Boxx som Byte
Dim Boxx2 som Byte
Dim Tube(4) som Byte
Dim X som Byte

Dim Uart_in_str som sträng * 255
Dim Stationname som sträng * 60
Dim titel som sträng * 60
Dim Station_pos som Byte
Dim Title_pos som Byte
Dim pekaren som Byte
Dim Station_length som Byte
Dim Title_length som Byte
Dim Temp_str som sträng * 4
Dim Volumestr som sträng * 3
Dim Station(20) som sträng * 30
På Int0 0int
Aktivera Int0
Aktivera avbrott

' Ange Chohung bank

På Int1 1int,
Aktivera Int1
Aktivera avbrott

Vänta 1
CLS

Init:
ShowPic 0, 0, Intro
Box (115, 90)-(200, 104), 255

För I = 118 till 194 steg 4

J = I + 3
Boxfill (i, 92) - j, 102, 255
Vänta 3

Nästa
Skriva ut Chr(13)
Vänta 2
Skriva ut "mpc klart"
För I = 0 till 3
Stationname = Lookupstr (i, Tunerlist2)
Skriva ut "mpc add"; Stationname
Nästa
Print "mpc volym 50"
Print "mpc play"
Volym = 20
GOSUB Empty_buffer
Jag = 1
Count = 1
Main:
State = jag
CLS
Om statliga = 1 så gå till Radio
Om statliga = 2 sedan Goto Tuning
Om statliga = 3 sedan Goto Vol
Om statliga = 4 så gå till Setup

Radio:

Maxpos = 6
POS = 1
Oldpos = 1
Boxx = 0
Boxx2 = 40

ShowPic 0, 88, spela
ShowPic 40, 88, paus
ShowPic 80, 88, Stopp
ShowPic 120, 88, volym
ShowPic 160, 88, Tuner
ShowPic 200, 88, klocka
Box (0, 88)-(40, 127), 255

Göra
Om jag <> Ange sedan Goto Main
Om Pos <> Oldpos sedan
Box (boxx, 88)-(boxx2, 127), 0
Boxx = Pos - 1
Boxx = Boxx * 40
Boxx2 = Boxx + 40
Box (boxx, 88)-(boxx2, 127), 255
Oldpos = Pos
Slut om

Skriva ut "echo"; Chr(34); "låt"; Chr(34); " | NC localhost 6600 | grep -e "; Chr(34); "^ Titel:"; Chr(34); " -e " ; Chr(34); "^ Namn:"; Chr(34); ">/dev/tts/0"; Chr(13)
Waitms 500
GOSUB Getuart
GOSUB Parser
CLS Text
Leta upp 5, 1
LCD-Stationname
Leta upp 8, 1
LCD-titel

GOSUB Readclock
Loop

Tuning:

CLS
Count = 1
Göra
CLS Text
Om jag <> Ange sedan Goto Main
GOSUB Readclock

För J = 1 till 4
Station(j) = Lookupstr (j, Tunerlist)
Nästa
J = Count
Leta upp 5, 5
LCD-Station(j)
J = antal + 1
Leta upp 6, 5
LCD-Station(j)
J = Count + 2
Leta upp 7, 5
LCD-Station(j)
Waitms 500
Loop

Volymprocent:
CLS
Göra
GOSUB Readclock
Om jag <> Ange sedan Goto Main
Skriva ut "echo"; Chr(34); "status"; Chr(34); " | NC localhost 6600 | grep -e "; Chr(34); "^ volym:"; Chr(34); ">/dev/tts/0"; Chr(13)
Waitms 100
GOSUB Getuart
GOSUB Volumeparser
CLS Text
Leta upp 6, 10
Volym = Val(volumestr)
LCD "volym:"; Volym

Loop

Setup:
J = 1
Om J = 1 sedan Count = timmar annat Count = Mins
CLS
Göra
CLS
Om jag <> Ange sedan Goto Main

"Gosub Readclock

Om J = 1 sedan timmar = räkna annat minuter = Count

Tube(2) = minuter / 10 "delas i timmar och minuter till
Temp = Tube(2) * 10 ' 4 siffror så att den kan visas
Tube(1) = minuter - Temp
Tube(4) = timmar / 10
Temp = Tube(4) * 10
Tube(3) = timmar - Temp

Temp = Tube(4)
X = 48
GOSUB Clockpic
Temp = Tube(3)
X = 72
GOSUB Clockpic
Temp = 11
X = 96
GOSUB Clockpic
Temp = Tube(2)
X = 120
GOSUB Clockpic
Temp = Tube(1)
X = 144
GOSUB Clockpic

Leta upp 8, 8
LCD jag
Waitms 100
Loop

Slutet

0int:

Om jag = 1 och Pos = 1 sedan Skriv "mpc play"
Om jag = 1 och Pos = 2 sedan Skriv "mpc paus"
Om jag = 1 och Pos = 3 sedan Skriv "mpc stopp"
Om jag = 1 och Pos = 4 då jag = 3

Om jag = 1 och Pos = 6 då jag = 4
Om statliga = 2 sedan
Print "mpc play"; Greve
Jag = 1
Slut om
Om jag = 1 och Pos = 5 då jag = 2
Waitms 100
Om statliga = 3 då jag = 1
Om jag = 4 och J = 2 då
GOSUB Setclock
Jag = 1
Slut om
Om jag = 4 och J = 1 då
GOSUB Setclock
J = 2
Slut om
Returnera

1int:
Waitms 1
Om Cha = 1 och jag <> 3 sedan
Om Chohung bank = 0 då Incr räkna annat Decr Count
Slut om
Om Cha = 1 och jag = 3 då
Om Chohung bank = 0 sedan Skriv "mpc volym + 5" annat Print "mpc volym -5"
Slut om
POS = Count
Om Pos > Maxpos då Pos = Maxpos
Om Pos < 1 sedan Pos = 1

Returnera

Getuart:
Uart_in_str = ""
Göra
Uart_buffer = Ischarwaiting()
Om Uart_buffer > 0 då
Uart_in = Inkey()
Om Len(uart_in_str) < 254 då Uart_in_str = Uart_in_str + Chr(uart_in)
Om Len(uart_in_str) = 254 sedan Uart_in_str = Uart_in_str + Chr(13)
Slut om
Loop tills Uart_buffer = 0
GOSUB Empty_buffer
Returnera
Volumeparser:

Volumestr = ""
Temp = Instr (uart_in_str, "volym:")
Temp = Temp + 8
Volumestr = Mid (uart_in_str, Temp, 3)

Returnera
Parser:

Stationname = ""
Title = ""
Station_pos = Instr (uart_in_str, "namn:")
Title_pos = Instr (uart_in_str, "titel:")

Station_pos = Station_pos + 6
Längd = 0
Göra
INCR längd
Pekaren = Station_pos + längd
Temp_str = Mid (uart_in_str, pekare, 1)
Loop tills Temp_str = Chr(13) eller Temp_str = ""
Om längd > 60 då längd = 60
Stationname = Mid (uart_in_str, Station_pos, längd)

Title_pos = Title_pos + 7

Längd = 0
Göra
INCR längd
Pekaren = Title_pos + längd
Temp_str = Mid (uart_in_str, pekare, 1)
Loop tills Temp_str = Chr(13) eller Temp_str = ""
Om längd > 60 då längd = 60
Titel = Mid (uart_in_str, Title_pos, längd)

Om Station_pos = 6 då Stationname = "Namn hittades inte!"
Om Title_pos = 7 sedan titel = "Titel hittades inte!"

Returnera

Empty_buffer:

Göra
Uart_in = Inkey()
Uart_buffer = Ischarwaiting()
Loop tills Uart_buffer = 0
Returnera

Readclock:

I2cstart
I2cwbyte Ds1307w
I2cwbyte Admins
I2cstop
I2cstart
I2cwbyte Ds1307r
I2crbyte minuter, Ack
I2crbyte timmar, Nack

Timmar = timmar och & B00111111 "tar bort bit6 & bit7

Timmar = Makedec(hours) ' omvandlar BCD till Decimal
Minuter = Makedec(mins)

Tube(2) = minuter / 10 "delas i timmar och minuter till
Temp = Tube(2) * 10 ' 4 siffror så att den kan visas
Tube(1) = minuter - Temp
Tube(4) = timmar / 10
Temp = Tube(4) * 10
Tube(3) = timmar - Temp

Temp = Tube(4)
X = 48
GOSUB Clockpic
Temp = Tube(3)
X = 72
GOSUB Clockpic
Temp = 11
X = 96
GOSUB Clockpic
Temp = Tube(2)
X = 120
GOSUB Clockpic
Temp = Tube(1)
X = 144
GOSUB Clockpic

Returnera

Setclock:

Minuter = Makebcd(mins)
Timmar = Makebcd(hours)
Återställa Hours.6
I2cstart
I2cwbyte Ds1307w
I2cwbyte Adsecs
I2cwbyte & B00000000
I2cwbyte minuter
I2cwbyte timmar
I2cstop

Timmar = timmar och & B00111111 "tar bort bit6 & bit7

Timmar = Makedec(hours) ' omvandlar BCD till Decimal
Minuter = Makedec(mins)

Returnera
Clockpic:

Om Temp = 1 sedan Showpic X, 0, 1
Om Temp = 2 sedan Showpic X, 0, 2
Om Temp = 3 sedan Showpic X, 0, 3
Om Temp = 4 sedan Showpic X, 0, 4
Om Temp = 5 sedan Showpic X, 0, 5
Om Temp = 6 sedan Showpic X, 0, 6
Om Temp = 7 sedan Showpic X, 0, 7
Om Temp = 8 sedan Showpic X, 0, 8
Om Temp = 9 sedan Showpic X, 0, 9
Om Temp = 0 då Showpic X, 0, 0
Om Temp = 11 sedan Showpic X, 0, Dp

Returnera
Intro:
$bgf "wifiradio.bgf"
Spela:
$bgf "play.bgf"
Paus:
$bgf "pause.bgf"
Stopp:
$bgf "stop.bgf"
Volym:
$bgf "volume.bgf"
Tuner:
$bgf "tuner.bgf"
Klocka:
$bgf "clock.bgf"
0:
$bgf "0.bgf"
1:
$bgf "1.bgf"
2:
$bgf "2.bgf"
3:
$bgf "3.bgf"
4:
$bgf "4.bgf"
5:
$bgf "5.bgf"
6:
$bgf "6.bgf"
7:
$bgf "7.bgf"
8:
$bgf "8.bgf"
9:
$bgf "9.bgf"
DP:
$bgf "dp.bgf"
Streep:
$bgf "streep.bgf"
Tunerlist:

Data "", "1920 nätverk", "KCEA", "FM Tango Junin Argentina", "TANGOCLUB"

Tunerlist2:

Data "http://64.5.130.43:80", "http://198.182.76.2:8000", "http://200.58.116.222:10580", http://190.245.64.194:8000

Se Steg
Relaterade Ämnen

Bygga din egen WIFI jammer

bygga din egen WIFI jammer med en 2,4 GHz AV sändare. I den här videon visar jag dig hur du kan bygga din egen jammer för att jam en WIFI-anslutning. Jag vill också förklara hur detta fungerar och skillnaden mellan störning och störningar.Wikipedias...

Bygga din egen elektrisk motorcykel

ÖversiktDet färdiga projektet är en 1981 Kawasaki KZ440, omvandlas till elektriska. Den drivs av fyra Optima gul topp förseglade (AGM) bly-syra batterier, som driver en Briggs & Stratton Etek elmotor. Hastigheten på motorn styrs av en Alltrax varumär...

Bygga din egen Smartphone

Denna handledning tar dig från början till slut i att bygga din egen smartphone. Du kommer att börja med 3D utskrift fall sedan löda kretskort tillsammans, församlingen, och slutligen installera en mobil OS på din telefon och använda Python för att g...

Hur man bygger din egen Gaming maskin

Älskar dugamla skolan arkadspel? Hur skulle du vilja veta hur man bygger din egen, med ett urval av över 5 000 spel att spela när som helst det passar din fantasi?Vill veta mer? Klicka här för mer information eller kolla in följande steg för att skap...

DIY, BYGGA DIN EGEN DIGITALA BINARY CLOCK!

Detta Instructable visar hur man bygger en digital klocka på enklaste sätt. Du behöver bara några verktyg och lite tid...Steg 1: Introduktion Det finns två sätt att bygga din egen binär klocka.1.-en är till göra din egen PCB. Att lära sig lite av mik...

Bygga din egen dator

varför skulle någon gå ut och köpa en dator från en manufaturer som Dell eller Gateway, när de kunde bygga en mer kraftfull dator för mindre pengar? Svaret, de vet inte hur man bygger den.Detta kanske låter som en komplicerad process, men i alla verk...

Bygg din egen elbil: Billiga

Hej alla,Detta är en presentation jag gjorde på moder jord mässan september 25th 2010.I den täcka jag de steg som det tog för mig att bygga en elbil på en budget.Det var bara en 45 minuters presentation, så vissa saker var bara berörde som i sig kan...

Bygg din egen elbil!

"Electro-Metro" projektet.Har inte råd en Nissan Leaf? Inga problem!Bygga en billig elbil själv genom att ta bort den bilen motorn, ersätta den med en gaffeltruck motor, och lägga till batterier.Jag har massor av videor om projektet på:http://ww...

Bygga din egen jorden ugn

Vem älskar inte läcker vedeldad ugn pizza? INGEN.Jag hade en dröm om bakgård pizza part kul gånger och började göra en del efterforskningar att göra det dröm verklighet.Först tittade jag på material kostnaden för en tegelugn (spoiler alert: de är all...

Bygg din egen hörsel Augmented Seashell!

i detta Instructable jag kommer att förklara hur man bygger din egen hörsel Augmented Seashell. Nu, innan vi börjar, vad är en auditiv Augmented Seashell?Svar: i princip är det en snäcka kan producera andra ljud än det redan gör. En snäcka producerar...

Bygga din egen Mobility Rehab handikappade Scooter för mindre än $500

Jag kan visa dig hur du konverterar en rakkniv E300 skoter, föreslår jag att du köpa från Amazon.com bör vara omkring $250, i din egen Rehab handikappade scooter. E300 skoter får du har bara en hastighet. Hög hastighet, eller kusten, inget däremellan...

Bygga din egen ficka SID Audio Player

Låt oss tid reser tillbaka till 80-talet igen genom att skapa din egen Propellerpowered Pocket SID Audio Player.]Den Guinness rekordbok listar Commodore 64 som den bäst säljande datormodellen genom tiderna. C64: an mest övertygande funktioner var det...

Bygg din egen upphöjd trädgård säng! Odla din egen mat!

i denna blogg, vi hoppas att instruera dig att bygga din egen trädgård säng. Lära av våra misstag och odla din egen mat hemma!Steg 1: fördelarDet finns många fördelar med att bygga en uppvuxen trädgård säng!1) är det lättare på din rygg! Du behöver i...

Bygg din egen bärbara rostfritt stål fälgar tube - och hela bara väger bara 17 kg!

Jag är en långsiktig homebrewer men jag har alltid gjort enda steg infusion mosar. Jag har alltid velat en fälgar eller HERMS system men jag inte gillar det utrymme ett fullständigt system tar upp och jag har alltid backade på grund av kostnaden. Men...

Hemma Hydroponics - en handbok om hur att bygga din egen hydroponics system

IntroduktionOrsakerna och effekterna av överbefolkningÖverbefolkning ska inte tas lättvindigt. Den har några fruktansvärda effekter, en av dem är en brist på mat. Våra för närvarande överbefolkad värld orsakas av den industriella revolutionen. Den in...

Hur till bygga din egen rörliga Tardis!

Få din "hur att bygga din egen Tardis Kit" & en annan klar Tardis för skala.Steg 1: Steg 1 öppna Tardis Kit Steg 1 Öppna "Hur att bygga din egen Tardis Kit"Kontrollera att du har alla bitar du behöver!Steg 2: Steg 2 sätta lampa i T...

Bygga din egen gateway brandvägg

lär dig att bygga din egen gateway brandvägg med FreeBSD® och gamla PC delar. Brandväggen kommer att bestå av PF brandväggen, Snort-ID: N, olika IPS applikationer, Squid proxy och några intuitivt webbgränssnitt för revision. Kostnaden för detta proje...

Bygg din egen gitarren effektpedal!

Med dagens ekonomi, de flesta kvalitet gitarr effekt pedaler är över $100, det är mycket sällan att du hittar en bra pedal för under $100, särskilt om den är gjord i USA. Det finns ett mycket billigare alternativ om du bara måste ha vissa grundläggan...

En Wide Body Quadrotor - mönster och idéer för att bygga din egen.

Multirotors--hur coola de är!En quadrotor är en typ av multirotor flygplan. Dessa flygplan är enklare än någonsin att bygga. Du kan börja med denna maskin och öka dess kapacitet (och komplicerade) som du lära dig mer. Din erfarenhet, kunskap och resp...