Construire votre propre radio Wifi (9 / 14 étapes)

Étape 9: Code

je vais juste ajouter le code complet ici. C’est un peu brouillon que je n’avais pas n’importe quel temps pour le nettoyer. Quand j’ai nettoyé (et amélioré), je posterai le nouveau code. Je vais aussi ajouter ici les photos que j’ai utilisé pour que vous puissiez les utiliser trop.

Lorsque vous programmez votre Atmega, vous devez également désactiver JTAG dans le fusebits et la valeur de l’oscillateur interne à 8MHz.

Le code s’insérera dans un Atmega16, mais j’ai utilisé un Atmega32 que je tiens à ajouter quelques fonctionnalités supplémentaires plus tard.

$regfile = « m32def.dat »
$crystal = 8000000
$baud = 9600

Config Serialin = mise en mémoire tampon, taille = 255
Config Serialout = mise en mémoire tampon, taille = 100
Config Graphlcd = 240 * 128, Dataport = Porta, Controlport = Portc, Ce = 5, Cd = 4, Wr = 7, Rd = 6, réinitialiser = 2, Fs = 3, Mode = 8

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

Pind.3 Alias Cha
CHB Alias Pind.4

Config Cha = entrée
config Chb = entrée

Const Ds1307w = & HD0 ' écrire DS1307
Const Ds1307r = & HD1 ' lu ds1307
Const Adsecs = & H00 ' adresse secondes
Admins const = & H01 ' adresse minutes

Dim Count As Byte
Dim I As Byte
Dim J As Byte
Dim Pos As Byte
Dim Oldpos As Byte
Dim Maxpos As Byte
Dim État As Byte
Dim Volume As Byte
Dim Temp As Byte
Dim Uart_in As Byte
Dim Uart_buffer As Byte
Dim heures As Byte
Dim minutes As Byte
Dim s As Byte
Dim longueur As Byte
Dim Boxx As Byte
Dim Boxx2 As Byte
Dim Tube(4) As Byte
Dim X As Byte

Dim Uart_in_str As String * 255
Dim Stationname As String * 60
Dim Title As String * 60
Dim Station_pos As Byte
Dim Title_pos As Byte
Dim pointeur As Byte
Dim Station_length As Byte
Dim Title_length As Byte
Dim Temp_str As String * 4
Dim Volumestr As String * 3
Dim Station(20) As String * 30
Sur Int0 0int
Activez Int0
Activer les interruptions

' Set Chb

Sur 1int Int1,
Activez Int1
Activer les interruptions

Attendre 1
CLS

Init :
ShowPic 0, 0, Intro
Boîte (115, 90)-(200, 104), 255

Pour I = 118 à 194, étape 4

J = I + 3
Boxfill (i, 92) - j, 102, 255
Attendre 3

Prochaine
Imprimer des Chr (13)
Attendre 2
Imprimer « mpc clair »
For I = 0 à 3
Stationname = Lookupstr (i, Tunerlist2)
Imprimer « mpc ajouter » ; Stationname
Prochaine
Print "mpc volume 50"
Imprimer « mpc play »
Volume = 20
GoSub Empty_buffer
J’ai = 1
Count = 1
Principal :
État = I
CLS
Si l’État = 1 Then Goto Radio
Si l’état = 2 Then Goto Tuning
Si l’État = 3 Then Goto Vol
Si l’État = 4 Then Goto Setup

Radio :

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

ShowPic 0, 88, jouer
ShowPic 40, 88, Pause
ShowPic 80, 88, Stopp
ShowPic 120, 88, Volume
ShowPic 160, 88, Tuner
ShowPic 200, 88, horloge
Boîte (0, 88) - 40 (127) 255

Faire
Si j’ai <> d’état puis Goto Main
Si Pos <> Oldpos puis
Boîte (boxx, 88)-(boxx2, 127), 0
Boxx = Pos - 1
Boxx = Boxx * 40
Boxx2 = Boxx + 40
Boîte (boxx, 88)-(boxx2, 127), 255
Oldpos = Pos
End If

Imprimer « echo » ; Chr (34) ; « currentsong » ; Chr (34) ; " | NC localhost 6600 | grep -e "; Chr (34) ; « ^ Titre: "; Chr (34) ; " -e " ; Chr (34) ; « ^ Nom: "; Chr (34) ; ">/dev/tts/0" ; Chr (13)
Waitms 500
GoSub Getuart
GoSub Parser
Texte de CLS
Recherchez 5, 1
LCD Stationname
Localiser 8, 1
Titre de l’écran LCD

GoSub Readclock
Boucle

Tuning :

CLS
Count = 1
Faire
Texte de CLS
Si j’ai <> d’état puis Goto Main
GoSub Readclock

Pour J = 1 à 4
Station(j) = Lookupstr (j, Tunerlist)
Prochaine
J = Count
Localiser les 5, 5
LCD Station(j)
J = Count + 1
Repérez les 6, 5
LCD Station(j)
J = Count + 2
Localiser les 7, 5
LCD Station(j)
Waitms 500
Boucle

Vol :
CLS
Faire
GoSub Readclock
Si j’ai <> d’état puis Goto Main
Imprimer « echo » ; Chr (34) ; « statut » ; Chr (34) ; " | NC localhost 6600 | grep -e "; Chr (34) ; « ^ volume: "; Chr (34) ; ">/dev/tts/0" ; Chr (13)
Waitms 100
GoSub Getuart
GoSub Volumeparser
Texte de CLS
Repérez les 6, 10
Volume = Val(volumestr)
Écran LCD "Volume:" ; Volume

Boucle

Programme d’installation :
J = 1
Si J = 1 puis Count = nombre d’autre heures = min
CLS
Faire
CLS
Si j’ai <> d’état puis Goto Main

« Gosub Readclock

Si J = 1, puis heures = nombre d’autre Mins = Count

Tube(2) = mn / 10 ' fractionne les heures et minutes en
Temp = Tube(2) * 10 4 chiffres alors qu’il peut être affiché
Tube(1) = minutes - Temp
Tube(4) = heures / 10
Temp = Tube(4) * 10
Tube(3) = heu - 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

Localiser 8, 8
Écran LCD j’ai
Waitms 100
Boucle

Fin

0int :

Si j’ai = 1 Pos et = 1 puis Print « mpc play »
Si j’ai = 1 Pos et = 2 puis Print « mpc pause »
Si j’ai = 1 Pos et = 3 puis imprimé « mpc stop »
Si j’ai = 1 et Pos = 4 puis j’ai = 3

Si j’ai = 1 et Pos = 6 alors j’ai = 4
Si l’état = 2 Then
Imprimer « mpc play » ; Comte
J’ai = 1
End If
Si j’ai = 1 et Pos = 5 alors je = 2
Waitms 100
Si l’État = 3 alors j’ai = 1
Si j’ai = 4 et J = 2 Then
GoSub Setclock
J’ai = 1
End If
Si j’ai = 4 et J = 1 Then
GoSub Setclock
J = 2
End If
Retour

1int :
Waitms 1
Si Cha = 1 et j’ai <> 3 puis
Si Chb = 0 alors Incr comptent d’autre Decr comte
End If
Si Cha = 1 et I = 3 Then
Si Chb = 0 puis Print "mpc volume + 5" Else Print "mpc volume -5"
End If
POS = Count
Si Pos > Maxpos Then Pos = Maxpos
Si Pos < 1 puis Pos = 1

Retour

Getuart :
Uart_in_str = ""
Faire
Uart_buffer = Ischarwaiting()
Si Uart_buffer > 0 Then
Uart_in = Inkey()
Si Len(uart_in_str) < 254 puis Uart_in_str = Uart_in_str + Chr(uart_in)
Si Len(uart_in_str) = 254 Then Uart_in_str = Uart_in_str + Chr (13)
End If
Boucle jusqu'à Uart_buffer = 0
GoSub Empty_buffer
Retour
Volumeparser :

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

Retour
Analyseur :

Stationname = ""
Titre = ""
Station_pos = Instr (uart_in_str, "nom:")
Title_pos = Instr (uart_in_str, « titre: »)

Station_pos = Station_pos + 6
Longueur = 0
Faire
Longueur de la incr
Pointeur = Station_pos + longueur
Temp_str = Mid (uart_in_str, pointeur, 1)
Boucle jusqu'à Temp_str = Chr (13) ou Temp_str = ""
Si longueur > 60 puis longueur = 60
Stationname = Mid (uart_in_str, Station_pos, longueur)

Title_pos = Title_pos + 7

Longueur = 0
Faire
Longueur de la incr
Pointeur = Title_pos + longueur
Temp_str = Mid (uart_in_str, pointeur, 1)
Boucle jusqu'à Temp_str = Chr (13) ou Temp_str = ""
Si longueur > 60 puis longueur = 60
Titre = Mid (uart_in_str, Title_pos, longueur)

Si Station_pos = 6 Then Stationname = « Nom introuvable! »
Si Title_pos = 7 puis titre = « Titre introuvable! »

Retour

Empty_buffer :

Faire
Uart_in = Inkey()
Uart_buffer = Ischarwaiting()
Boucle jusqu'à Uart_buffer = 0
Retour

Readclock :

I2cstart
I2cwbyte Ds1307w
I2cwbyte Admins
I2cstop
I2cstart
I2cwbyte Ds1307r
I2crbyte mn, Ack
I2crbyte heures, Nack

Heures = heures et & B00111111 ' supprime bit6 & bit7

Heures = Makedec(hours) ' convertit BCD décimal
Min = Makedec(mins)

Tube(2) = mn / 10 ' fractionne les heures et minutes en
Temp = Tube(2) * 10 4 chiffres alors qu’il peut être affiché
Tube(1) = minutes - Temp
Tube(4) = heures / 10
Temp = Tube(4) * 10
Tube(3) = heu - 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

Retour

SetClock :

Min = Makebcd(mins)
Heures = Makebcd(hours)
Remise à zéro Hours.6
I2cstart
I2cwbyte Ds1307w
I2cwbyte Adsecs
I2cwbyte & B00000000
I2cwbyte mn
I2cwbyte heures
I2cstop

Heures = heures et & B00111111 ' supprime bit6 & bit7

Heures = Makedec(hours) ' convertit BCD décimal
Min = Makedec(mins)

Retour
Clockpic :

Si Temp = 1 X Showpic, 0, 1
Si Temp = 2 X Showpic, 0, 2
Si Temp = 3 X Showpic, 0, 3
Si Temp = 4 X Showpic, 0, 4
Si Temp = 5 X Showpic, 0, 5
Si Temp = 6 X Showpic, 0, 6
Si Temp = 7 X Showpic, 0, 7
Si Temp = 8 X Showpic, 0, 8
Si Temp = 9 X Showpic, 0, 9
Si Temp = 0 X Showpic, 0, 0
Si Temp = 11 X Showpic, 0, Dp

Retour
Intro :
$bgf « wifiradio.bgf »
Jouer :
$bgf « play.bgf »
Pause :
$bgf « pause.bgf »
Stop :
$bgf « stop.bgf »
Volume :
$bgf « volume.bgf »
Tuner :
$bgf « tuner.bgf »
Horloge :
$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 :

Données "", « réseau de 1920 », « KCEA », « Tango FM Junin Argentine », « TANGOCLUB »

Tunerlist2 :

Données "http://64.5.130.43:80", "http://198.182.76.2:8000", "http://200.58.116.222:10580", http://190.245.64.194:8000

Articles Liés

Construire votre propre brouilleur WIFI

Construire votre propre brouilleur WIFI

construire votre propre brouilleur WIFI utilisant un 2,4 GHz AV des émetteurs. Dans cette vidéo, je vais vous montrer comment vous pouvez construire votre propre brouilleur pour jam une connexion WIFI. Aussi, je vais vous expliquer comment cela fonct
Construire votre propre Radio FM brut

Construire votre propre Radio FM brut

Dans ce projet, je démontrerai comment un transmetteur RF fonctionne et comment ce principe se compare à l'ancienne AM. Je vais aussi vous montrer comment construire un récepteur FM simple et brut, qui peut parfois même vous permettre d'écouter vos s
Construire votre propre radio sur internet

Construire votre propre radio sur internet

Ce Instructable vous montre comment créer une Webradio (écouter de la musique house, rock, jazz, salsa...) en moins de 30 minutes sans aucune technique connaissance ni soudure.La radio utilise un Pi framboise comme matériel, un prêt à un fichier flas
Construire votre propre moto électrique

Construire votre propre moto électrique

vue d'ensembleLe projet fini est un 1981 Kawasaki KZ440, converti en électrique. Il est alimenté par quatre Optima Yellow Top scellé batteries au plomb (AGM), qui animent un moteur Briggs & Stratton Etek. La vitesse du moteur est contrôlée par un All
Construire votre propre Smartphone

Construire votre propre Smartphone

Ce tutoriel vous apporte de bout en bout dans la construction de votre propre smartphone. Vous commencerez par 3D impression cas, puis souder les circuits imprimés ensemble, Assemblée et enfin installer un OS mobile sur votre téléphone et à l'aide de
Construire votre propre micro-ordinateur de style rétro.

Construire votre propre micro-ordinateur de style rétro.

Années 1970 aux années 1980 ont été les moments de magie pour l'ordinateur personnel.    Si vous pourriez le temps voyage retour à 1976 à Dr Crist à Palo Alto, CA, vous auriez trouvé quelques gars cherche débraillés, créant l'ordinateur original Appl
Comment construire votre propre bloc de boucher

Comment construire votre propre bloc de boucher

J'ai trouvé que pour construire votre propre boucher bloc n'est pas compliqué tout ça ! Avec la merveilleuse ressource de notre étable pour tirer (mes grands-parents vieux travail atelier de menuiserie) je continue à trouver juste matériel de plus en
Comment construire votre propre Machine de jeu

Comment construire votre propre Machine de jeu

Tu aimesJeux d'arcade old school ? Comment voulez-vous savoir comment construire votre propre, avec une sélection de plus 5 000 jeux à jouer à tout moment, qu'il s'adapte à votre fantaisie ?Vous voulez en savoir plus ? Cliquez ici pour plus d'informa
Construire votre propre Robot Butler!!!  -Tutorial, Photos et vidéo

Construire votre propre Robot Butler!!! -Tutorial, Photos et vidéo

EDIT : plus d'informations sur mes projets Découvrez mon nJe fais aussi consultant pour des effets spéciaux projets/produits robotique et mécatronique. Visitez mon site Web - narobo.com pour plus de détails.Vous avez toujours voulu un robot butler qu
IoT industrielle - comment construire votre propre pagode extérieure pour la météo, qualité de l’Air et autres capteurs

IoT industrielle - comment construire votre propre pagode extérieure pour la météo, qualité de l’Air et autres capteurs

** Mise à jour : L'article ci-dessous provient de notre héritage app Android ! Valarm est IoT industrielle. Nous aiderons à vous, vos équipes et votre entreprise avec des applications industrielles de l'ITO utilisant Valarm outils Cloud.Si vous voule
Remix : construire votre propre 555

Remix : construire votre propre 555

Si vous appréciez mon travail, alors s'il vous plaît envisager aller et donner un peu d'argent pour m'aider à financer un comprimé de libres, je travaille sur un projet futur.http://www.gofundme.com/Rpitablet-Merci------------------------------------
Construire votre propre « Satellite espion »

Construire votre propre « Satellite espion »

J'ai toujours pensé que ce serait bien d'avoir votre propre Satellite « Espion ». Le fait que nous avons nos propres Satellites espions voyager autour de la terre juste me stupéfie. Alors, pourquoi ne pas avoir votre propre ? Ce instructable qui suit
Construire votre propre laboratoire de radioastronomie FM

Construire votre propre laboratoire de radioastronomie FM

parce que je suis un homme simple, et l'idée d'essayer de comprendre tout de l'inconnu est plus que je peux me débrouiller, je préfère le côté plus simple de l'astronomie. Mes outils personnels astronomie incluent un télescope à réflecteur 4.5", une
Construire votre propre alimentation régulée

Construire votre propre alimentation régulée

Une alimentation régulée est un élément très important si vous générez des projets électroniques. Mais l'achat d'une bonne alimentation régulée peut être coûteuse. Donc dans ce instructable je vais vous montrer comment construire votre propre aliment