Endlich wieder Urlaub nach Corna

Anbei ein paar Bilder von Cala Marçal und den verschiedenen Orten die wir besucht haben.

Veröffentlicht unter Reisen | Schreib einen Kommentar

Wochenend-Projekt: Tasmota Firmware auf eine Gosund Steckdose

Ursprünglich wollte ich die Tasmota Firmware mit dem Arduino aufspielen. Leider habe ich es mit der neuen Arduino IDE nicht hin bekommen. Mit Arduino wäre es natürlich super gewesen, denn dann hätte ich mir keine FTDI232 Schnittstelle besorgen müssen.

Vorne Weg!

220 Volt sind kein Spaß! Die Steckdose niemals im geöffneten Zustand in die Steckdose stecken! Für Schäden übernehme ich keine Haftung. Die hier vorgestellte Methode darf nur von einem Fachmann nachgemacht werden!

Folgende Dinge werden gebraucht:

  1. Computer (lol)
  2. FTDI Programmer mit USB Kabel
  3. Firmware von Tasmota (55 Gosund SP1 v23 ) http://thehackbox.org/tasmota/release/
  4. Software zum Programmieren (nodemcu-flasher-master): https://github.com/nodemcu/nodemcu-flasher
  5. Gosund Steckdose
  6. Schraubendreher oder Pins mit dreieckigen Profil

So wird es gemacht:

  • Die Steckdose aufschrauben und wie im Bild zu sehen die Leitungen des FTDI mit den Anschlüssen der Steckdose verbinden. WICHTIG: den Jumper am FTDI auf 3,3V stellen! Bei 5V geht der Chip kaputt.

Man könnte auch die GND Leitung und die 3,3 Volt Leitung an den ESP anlöten, aber daraus würde sich ein paar Nachteile ergeben. Erstens ist es ein gefrimmel die Leitungen alle dort an zu löten und zweitens, und dass ist eigentlich der Hauptgrund, kann man so an Hand der LED den Status nicht sehen. Bei der Verdrahtung wie oben sieht man, dass beim normalen Start (USB des FTDI in den Computer) die Steckdose blau blinkt. Bei Rest (komme ich später noch darauf zu sprechen) blinkt nichts, die LED bleibt aus. Und wenn die Tasmota Firmware richtig aufgespielt wurde blinkt die LED nach dem Programmieren und Neustart (USB des FTDI aus- und wieder einstecken in den Computer) rot. Das alles wird nicht angezeigt wenn man nur den ESP verlötet.

  • Die Software (nachdem diese installiert wurde) aus dem Verzeichnis: …\nodemcu-flasher-master\Win64\Release\ESP8266Flascher.exe starten.

Sollte noch ein 32-Bit-Windows am start sein, so die ESP8266Flascher.exe aus dem WIN32 Verzeichnis nehmen. Nach dem Start der Software folgenden Einstelllungen wählen:
Com-Port müsste alleine gefunden werden, wenn nicht dann einstellen.

Wichtig! den SPI Mode auf DOUT stellen, da man die Übertragung der Daten nur mit zwei Pins sequenziell macht und die Adressen dabei nicht berücksichtigt werden. Alle anderen Modi funktionieren nicht mit der so vorgenommenen Verkabelung. Gemein ist nur, dass die Software, wenn ein anderer SPI Mode gewählt wurde munter Daten hin schickt und so tut, als ob alles in Ordnung wäre.

Sobald die Software eingestellt ist, kann der ESP in den Programmiermodus geschaltet werden. Dies ist eine enorme Aufgabe für einen „Grobmotoriker“ wie mich, da ich die Verbindung zwischen Reset und GND mit einer Pinzette mache und gleichzeitig den USB Stecker stecken muss. (Man könnte auch eine Drahtbrücke zwischen beiden Pins anlöten, wenn man mit der Pinzette nicht zurecht kommt.)

  • Also I00 und GND muss verbunden (bei mir mit Pinzette) sein und dann darf erst Strom auf die Schaltung (USB einstecken) kommen.

Jetzt kommt der Vorteil wenn man es so verlötet hat wie oben beschrieben ist. Denn hat man alles richtig gemacht, also der Strom kam bei verbundenen Pins (I00 und GND), so blinkt die LED an der Steckdose nicht. Hat man es falsch gemacht dann blinkt die LED blau und man kann nicht programmieren. Sollte die LED blinken dann noch mal USB zeihen, Pins verbinden und dann noch mal USB stecken.

Hinweis zum Blinken: Ich meine  das dauerhafte Blinken der Gosund Steckdose.

Blinkt nichts, dann kann man den Button „Flash(F)“ unter der Registerkarte „Operationen“ in der ESP8266Flascher.exe Software drücken.

Ist der Flash-Vorgang abgeschlossen kann man den USB-Stecker ziehen und dann noch mal zum Test stecken (Ohne verbundenen Pins I00 und GND). Wenn alles richtig gelaufen ist, blinkt die LED rot und man kann die Steckdose wieder von allen Kabeln befreien (entlöten) und dann wieder zusammen bauen.

Veröffentlicht unter Allgemein, Elektronik, Microcontroller, Wochenend Projekte | Schreib einen Kommentar

Halbjahres-Projekt

diese Jahr war das große Projekt unseren Garten zu machen. Viele Leute haben uns geholfen. Meine Frau war „Projektleiterin“ 🙂 Hier und da sind noch ein paar Verbesserungen nötig, aber im Großen und Ganzen sind wir fertig.

 

Vorher:

 

Nachher:

Veröffentlicht unter Allgemein, Wochenend Projekte | Schreib einen Kommentar

Wochenend-Projekt: Einschlaflicht v01.06 Prototype

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Attiny13_Einschlaflampe_v01_06_final.c%0A%20*%0A%20*%20Created%3A%2025.06.2018%2008%3A00%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%0A%20*%0A%20*%20Chip%20type%3A%20Attiny13a%0A%20*%20Clock%20frequency%3A%20SUT_CKSEL%20auf%20INTRCoSC_128KHZ_14CK_64MS%20(128kHz%20%2F%208%20%3D%2016kHz)%0A%20*%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B——–%2B%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB5)%20%7C1*%20%20%20%20%208%7C%20(VCC)%20%20Power%20%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB3)%20%7C2%20%20%20%20%20%207%7C%20(PB2)%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB4)%20%7C3%20%20%20%20%20%206%7C%20(PB1)%20%20Button%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20Ground%20(GND)%20%7C4%20%20%20%20%20%205%7C%20(PB0)%20%20LED%20White%20%5D%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B——–%2B%0A%20*%0A%20*%0A%20*%20Kurze%20Beschreibung%3A%0A%20*%20——————-%0A%20*%20%20-%20Die%20Lampe%20geht%20beim%20bet%C3%A4tigen%20des%20Tasters%20an%20PB1%20an%20(LED%20PB0%20Leuchtet)%0A%20*%20%20-%20Ohne%20weiteres%20Dr%C3%BCcken%20leuchtet%20sie%20etwa%2020%20Sekunden%0A%20*%20%20-%20Ein%20kurzes%20dr%C3%BCcken%20schaltet%20die%20Lampe%20aus%20oder%20an%0A%20*%09-%20Durch%20langes%20Dr%C3%BCcken%20kommt%20man%20in%20den%20Auswahl-Modus%0A%20*%09%09Es%20gibt%20drei%20Moden%20je%20nachdem%20wann%20man%20die%20Taste%20wieder%20los%20l%C3%A4sst%0A%20*%09-Moduswechsel%20durch%20langes%20Dr%C3%BCcken%20des%20Tasters%0A%20*%09%09%09Modus%201%20LED%20Blinkt%20langsam%20-%20hier%20wenn%20los%20gelassen%20wird%20leuchtet%20die%20Lampe%20etwa%205%20min.%0A%20*%09%09%09Modus%202%20LED%20Blinkt%20mittel%20%20-%20hier%20wenn%20los%20gelassen%20wird%20leuchtet%20die%20Lampe%20etwa%2010%20min.%0A%20*%09%09%09Modus%203%20LED%20Blinkt%20schnell%20-%20hier%20wenn%20los%20gelassen%20wird%20leuchtet%20die%20Lampe%20etwa%2015%20min.%0A%20*%20%0A%20*%2F%0A%0A%2F%2F%20%23define%20F_CPU%209600000UL%20%20%2F%2FDelay%20anpassen%20wegen%20Fusebit%0A%23define%20F_CPU%20128000UL%20%20%2F%2FDelay%20anpassen%20wegen%20Fusebit%0A%0A%23define%20LED_PIN%20PB0%20%20%20%20%20%20%20%2F%2F%20PB0%20as%20a%20LED%20pin%0A%23define%20Taster%09PB1%0A%23define%20AN%09%091%0A%23define%20AUS%09%090%0A%20%0A%23include%20%3Cavr%2Fwdt.h%3E%0A%23include%20%3Cstdint.h%3E%0A%23include%20%3Cutil%2Fdelay.h%3E%0A%23include%20%3Cavr%2Fio.h%3E%0A%23include%20%3Cavr%2Finterrupt.h%3E%0A%23include%20%3Cavr%2Fpower.h%3E%0A%23include%20%3Cavr%2Fsleep.h%3E%0A%0A%2F%2F%20Leere%20Interrupt-Routine%0AISR(PCINT0_vect)%0A%7B%0A%7D%0A%0Aint%20main%20(void)%0A%7B%0A%09%2F%2FWatchdog%20ausschalten!%0A%09MCUSR%20%26%3D%20~(1%3C%3CWDRF)%3B%0A%09WDTCR%20%7C%3D%20(1%3C%3CWDCE)%20%7C%20(1%3C%3CWDE)%3B%0A%09WDTCR%20%3D%200×00%3B%0A%09%0A%09DDRB%20%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%20%20%20%20%2F%2F%20Auf%20Ausgang%20schalten%0A%09PORTB%20%7C%3D%20(1%3C%3CTaster)%3B%20%20%20%20%20%2F%2F%20PullUp%20einschalten%0A%09%0A%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20einschalten%0A%09_delay_ms(400)%3B%20%2F%2F%20Kurzes%20Entprellen%20vom%20Watchdog%20auffachen%20(Tastendruck)%0A%09%0A%09int%20iLeuchtdauer%3D80%3B%20%2F%2FStandard%20Wert%20f%C3%BCr%20Leuchten%20%22iLeuchtdauer%20%2F%204%20%3D%20etwa%20Leuchtzeit%20in%20Sekunden%09%0A%09int%20iTimer%3D0%3B%0A%09int%20i%20%3D%200%3B%0A%09%0A%09while%20(1)%0A%09%7B%0A%09%09if%20(!(PINB%20%26%20(1%3C%3CTaster)))%20%2F%2F%20Pr%C3%BCfen%20auf%20Tastendruck%20-%20Bei%20Druck%20Befehl%20ausf%C3%BChren%0A%09%09%7B%0A%09%09%09_delay_ms(500)%3B%20%2F%2F%20kurze%20Pause%0A%09%09%09if%20(!(PINB%20%26%20(1%3C%3CTaster)))%20%2F%2F%20Pr%C3%BCfen%20auf%20Tastendruck%20-%20Bei%20Druck%20Befehl%20ausf%C3%BChren%0A%09%09%09%7B%0A%09%09%09%09iTimer%2B%2B%3B%20%2F%2F%20Z%C3%A4hler%20f%C3%BCr%20Auswahl%20erh%C3%B6hen%0A%09%09%09%09if%20(iTimer%3D%3D5)%0A%09%09%09%09%7B%0A%09%09%09%09%09for%20(i%3D0%3Bi%3C%3D10%3B%20i%2B%2B)%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09%09_delay_ms(250)%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09%2F%2FNach%20Toggle%20die%20LED%20einschalten%20und%20die%20Leuchtdauer%20setzen%0A%09%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20einschalten%0A%09%09%09%09%09iLeuchtdauer%20%3D%205*60*4%3B%20%2F%2F%20etwa%205%20Minuten%20Leuchtzeit%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09else%20if%20(iTimer%3D%3D10)%0A%09%09%09%09%7B%0A%09%09%09%09%09for%20(i%3D0%3Bi%3C%3D14%3B%20i%2B%2B)%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09%09_delay_ms(150)%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09%2F%2FNach%20Toggle%20die%20LED%20einschalten%20und%20die%20Leuchtdauer%20setzen%0A%09%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20einschalten%0A%09%09%09%09%09iLeuchtdauer%20%3D%2010*60*4%3B%20%2F%2F%20etwa%2010%20Minuten%20Leuchtzeit%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09else%20if%20(iTimer%3D%3D15)%0A%09%09%09%09%7B%0A%09%09%09%09%09for%20(i%3D0%3Bi%3C%3D18%3B%20i%2B%2B)%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09%09_delay_ms(100)%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09%2F%2FNach%20Toggle%20die%20LED%20einschalten%20und%20die%20Leuchtdauer%20setzen%0A%09%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20einschalten%0A%09%09%09%09%09iLeuchtdauer%20%3D%2015*60*4%3B%20%2F%2F%20etwa%2015%20Minuten%20Leuchtzeit%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09else%0A%09%09%09%7B%0A%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%09%2F%2FToggl%0A%09%09%09%09iLeuchtdauer%3D80%3B%20%2F%2F%20Leuchtdauer%20wieder%20auf%20Default%20setzen%0A%09%09%09%09_delay_ms(500)%3B%0A%09%09%09%7D%0A%09%0A%09%09%7D%20%0A%09%09else%20%0A%09%09%7B%0A%09%09%09iTimer%3D0%3B%20%2F%2F%20Z%C3%A4hler%20f%C3%BCr%20Auswahl%20auf%20Null%20setzen%20-Nicht%20sch%C3%B6n%20hier%0A%09%09%09%0A%09%09%09%2F%2F%20Taste%20wurde%20nicht%20gedr%C3%BCckt%20counter%20wird%20weiter%20herunter%20gerechnet%0A%09%09%09%2F%2F%20bis%200%20dann%20wird%20geschlafen%0A%09%09%09if%20(iLeuchtdauer%20%3E%3D%200)%20%0A%09%09%09%7B%0A%09%09%09%09iLeuchtdauer–%3B%0A%09%09%09%09_delay_ms(250)%3B%0A%09%09%09%7D%0A%09%09%09else%0A%09%09%09%7B%0A%09%09%09%09PORTB%20%26%3D%20~(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20aus%0A%09%09%09%09%2F%2F%0A%09%09%09%09%2F%2F%20Schlafen%20%0A%09%09%09%09%2F%2F%0A%09%09%09%09%2F%2F%0A%09%09%09%09%2F%2F%20Den%20ADC%20deaktivieren%2C%20brauchen%20wir%20nicht%20m%C3%BCsste%20aber%20pre%20Default%20aus%20sein.%0A%09%09%09%09power_adc_disable()%3B%0A%09%09%09%09%0A%09%09%09%09%2F%2F%20Pin-Change%20Interrupt%20f%C3%BCr%20die%204%20Taster%20erlauben%0A%09%09%09%09GIMSK%20%3D%20(1%3C%3CPCIE)%3B%0A%09%09%09%09PCMSK%20%7C%3D%20(1%3C%3CPB1)%3B%0A%09%09%09%09%0A%09%09%09%09sei()%3B%0A%09%09%09%09%0A%09%09%09%09set_sleep_mode(SLEEP_MODE_PWR_DOWN)%3B%0A%09%09%09%09sleep_mode()%3B%0A%09%09%09%09%0A%09%09%09%09%2F%2F%20iLeuchtdauer%3D80%3B%20%2F%2F%20Unn%C3%B6tig%20wurde%20nur%20zum%20Test%20ohne%20Watchdog%20ben%C3%B6tigt%0A%09%09%09%09%0A%09%09%09%09%2F%2F%20****************%20Aufwachen%20und%20alles%20f%C3%BCr%20den%20Reset%20%C3%BCber%20Watchdog%20vorbereiten%20******%0A%09%09%09%09wdt_enable(WDTO_1S)%3B%20%2F%2F%201s%20Sekunden%09Watchdog%20einstellen%0A%09%09%09%09wdt_enable(WDTO_30MS)%3B%20%2F%2F%2030ms%20Sekunden%09Watchdog%20einstellen%0A%09%09%09%09%0A%09%09%09%09%2F%2Ftu%20nix%20und%20warte%20auf%20den%20Biss%20des%20Wachhundes%0A%09%09%09%09_delay_ms(5000)%3B%20%2F%2F%20Der%20Wachhund%20ist%20auf%20eine%20Sek%20gestellt.%20Im%20Delay%20sind%20es%205%20Sekunden.%20-%20Also%20Reset%0A%09%09%09%09%2F%2F%20wdt_reset()%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09%0A%09%7D%0A%7D%0A%09%09%09%09%0A%0A%0A%09%09%09%2F%2FPORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%09%2F%2FToggl%0A%09%09%09%2F%2FPORTB%20%26%3D%20~(1%3C%3CLED_PIN)%3B%09%2F%2F%20LED%20aus%0A%09%09%09%2F%2FPORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%09%2F%2F%20LED%20einschalten“ message=“Attiny13_Einschlaflampe_v01_06_final.c“ highlight=““ provider=“manual“/]

Hier die akuellen Bilder zum Prototyp der Einschlaflampe. Die verfeinerungen am Code habe ich noch nicht in Angriff genommen.

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Wochenend-Projekt: Einschlaflicht v01.02

Ich dachte mir es wäre doch toll, wenn man ein kleine Lampe hat, die solange leuchtet bis man eingeschlafen ist und dann ausgeht.

Die Lampe an der ich baue Leucht soll nach dem einschalten (Wenn man den Knopf drückt) etwa 1 min lang leuchten, dann soll sie ausgehen. Wenn man den Knopf an der Lampe länge drückt blinkt sie je nachdem wie lange man drückt, – erst ganz schnell, dann etwas langsammer und dann noch mal ein wenig langsamer. Das Blinken zeigt an in welchen Einschalfmodus sich die Lampe befindet. Lässt man wärend dem Blinken die Taste los, so ist die Leuchtdauer je Modus 2 min., 5 min. oder 10 min.

Das ganze ist aber noch nicht ausgegoren und benötigt noch ein wenig „Entwicklungsarbeit“.

Der nachfolgende Code funktioniert schon mal mehr recht als schlecht dennoch veröffenliche ich ihn hier schon einmal.

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Attiny13_Einschlaflampe_v01_02.c%0A%20*%0A%20*%20Created%3A%2001.05.2018%2011%3A00%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%0A%20*%0A%20*%20Chip%20type%3A%20Attiny13a%0A%20*%20Clock%20frequency%3A%20SUT_CKSEL%20auf%20INTRCoSC_128KHZ_14CK_64MS%20(128kHz%20%2F%208%20%3D%2016kHz)%0A%20*%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B——–%2B%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB5)%20%7C1*%20%20%20%20%208%7C%20(VCC)%20%20Power%20%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB3)%20%7C2%20%20%20%20%20%207%7C%20(PB2)%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB4)%20%7C3%20%20%20%20%20%206%7C%20(PB1)%20%20Button%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20Ground%20(GND)%20%7C4%20%20%20%20%20%205%7C%20(PB0)%20%20LED%20White%20%5D%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B——–%2B%0A%20*%0A%20*%2F%0A%0A%23define%20F_CPU%20960000UL%20%20%2F%2FDalay%20anpassen%20wegen%20Fusebit%0A%2F%2F%20%23define%20F_CPU%2012800UL%20%20%2F%2FDalay%20anpassen%20wegen%20Fusebit%0A%0A%23define%20LED_PIN%20PB0%20%20%20%20%20%20%20%2F%2F%20PB0%20as%20a%20LED%20pin%0A%23define%20Taster%09PB1%0A%23define%20AN%09%091%0A%23define%20AUS%09%090%0A%20%0A%23include%20%3Cutil%2Fdelay.h%3E%0A%23include%20%3Cavr%2Fio.h%3E%0A%0Aint%20Leuchten(int%20iLeuchtdauer%2C%20int%20iAusAn)%3B%0A%0Aint%20main%20(void)%0A%7B%0A%09int%20iCounter%3D0%3B%09%09%2F%2F%20Zaehler%20f%C3%BCr%20l%C3%A4nge%20Tastendruck%0A%09int%20iBlink%3D0%3B%09%09%2F%2F%20Blink%20intervall%0A%09int%20iLeuchtdauer%3D120%3B%20%2F%2FStandard%20Wert%20f%C3%BCr%20Leuchten%20%22iLeuchte%20%2F%202%20%3D%20etwa%20Sekunden%22%0A%09%2F%2F%20int%20iAusAn%3B%0A%09%0A%09DDRB%20%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%20%20%20%20%2F%2F%20Auf%20Ausgang%20schalten%0A%09PORTB%20%7C%3D%20(1%3C%3CTaster)%3B%20%20%20%20%20%2F%2F%20PullUp%20einschalten%0A%09%0A%09while%20(1)%0A%09%7B%0A%09%09if%20((PINB%20%26%20(1%3C%3CTaster)))%20%2F%2F%20Pr%C3%BCfen%20auf%20Tastendruck%0A%09%09%7B%0A%09%09%09iCounter%3D0%3B%0A%09%09%09Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%2F%2FPORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%0A%09%09%7D%20%0A%09%09%09%09%0A%09%09else%20%0A%09%09%7B%0A%09%09%09if%20(iCounter%3D%3D100)%20%20%20%2F%2F%20Wenn%20Taste%20gedr%C3%BCckt%20f%C3%BCr%20100%20durchg%C3%A4nge%20gedr%C3%BCckt%20war%0A%09%09%09%7B%0A%09%09%09%09for(iBlink%3D0%3BiBlink%3C%3D20%3BiBlink%2B%2B)%0A%09%09%09%09%7B%0A%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09_delay_ms(50)%3B%0A%09%09%09%09%09iCounter%20%2B%2B%3B%0A%09%09%09%09%7D%0A%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%09iLeuchtdauer%20%3D240%3B%20%2F%2F2%20Min%0A%09%09%09%09%2F%2F%20Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%7D%0A%09%09%09else%20if%20(iCounter%3D%3D150)%0A%09%09%09%7B%0A%09%09%09%09for(iBlink%3D0%3BiBlink%3C%3D20%3BiBlink%2B%2B)%0A%09%09%09%09%7B%0A%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09_delay_ms(100)%3B%0A%09%09%09%09%09iCounter%2B%2B%3B%0A%09%09%09%09%7D%0A%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%09iLeuchtdauer%20%3D600%3B%20%2F%2F5%20Min%0A%09%09%09%09%2F%2F%20Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%7D%0A%09%09%09else%20if%20(iCounter%3D%3D200)%0A%09%09%09%7B%0A%09%09%09%09for(iBlink%3D0%3BiBlink%3C%3D20%3BiBlink%2B%2B)%0A%09%09%09%09%7B%0A%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09_delay_ms(300)%3B%0A%09%09%09%09%09iCounter%2B%2B%3B%0A%09%09%09%09%7D%0A%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%09iLeuchtdauer%20%3D1200%3B%20%2F%2F%2010%20Min%0A%09%09%09%09%2F%2F%20Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%7D%0A%09%09%09else%0A%09%09%09%7B%0A%09%09%09%09%2F%2Fif(iCounter%3C%3D100)%0A%09%09%09%09%2F%2FPORTB%20%26%3D%20~(1%3C%3CLED_PIN)%3B%20%2F%2FLicht%20aus%20wenn%20nur%20kurz%20gedr%C3%BCckt%20wurde%0A%09%09%09%09%0A%09%09%09%09_delay_ms(50)%3B%0A%09%09%09%09iCounter%2B%2B%3B%0A%09%09%09%09if(iCounter%3D%3D500)%0A%09%09%09%09%09iCounter%3D0%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09%09%0A%09%7D%0A%09return%200%3B%0A%7D%0A%0Aint%20Leuchten(int%20iLeuchtdauer%2C%20int%20iAusAn)%0A%7B%0A%09for%20(int%20i%20%3D0%3B%20i%3C%3DiLeuchtdauer%3Bi%2B%2B)%0A%09%7B%0A%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09_delay_ms(500)%3B%0A%09%09if%20(!(PINB%20%26%20(1%3C%3CTaster)))%20%2F%2F%20Pr%C3%BCfen%20auf%20Tastendruck%0A%09%09%09i%3DiLeuchtdauer%2B1%3B%0A%09%7D%0A%09%0A%09if%20(iAusAn%3D%3DAUS)%0A%09%7B%0A%09%09PORTB%20%26%3D%20~(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20AUS%0A%09%09_delay_ms(250)%3B%0A%09%09while(PINB%20%26%20(1%3C%3CTaster))%0A%09%09%7B%0A%09%09%09%2F%2F%20Warten%20bis%20Taste%20Ged%C3%BCckt%20wird%20Oder%20hier%20in%20den%20Sleepmodus%0A%09%09%7D%0A%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%0A%09%7D%0A%09%0A%09return(0)%3B%09%0A%7D“ message=““ highlight=““ provider=“manual“/]

Veröffentlicht unter Elektronik, Microcontroller, Wochenend Projekte | Schreib einen Kommentar

Wochenend-Projekt: elektronischer Würfel v1.06

Die Firmware vom Würfel habe ich optimiert. Nun fällt er in den Schlafmodus wenn er nicht gebraucht wird und verbraucht dann nur noch 0.06 µA. Nach dem Tastendruck wacht er wieder auf und wird vom Watchdog resetet.

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Wuerfel_V01_06.c%0A%20*%0A%20*%20Created%3A%2015.04.2018%2020%3A57%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%0A%20*%0A%20*%20Chip%20type%3A%20Attiny13a%0A%20*%20Clock%20frequency%3A%20SUT_CKSEL%20auf%20INTRCoSC_128KHZ_14CK_64MS%20(128kHz%20%2F%208%20%3D%2016kHz)%0A%20*%0A%20*%09%09%09%09%09%09%09%09%09%09%09%09%09%20%20%2B——–%2B%0A%20*%20%20%20%20%20%20%20%20%5B%20rest%20(leer)%09%09%09%09%09%09%09(PB5)%20%7C1*%20%20%20%20%208%7C%20(VCC)%20%20Power%09%09%09%09%09%09%09%09%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20Taster%09%09%09%09%09%09%09%09(PB3)%20%7C2%20%20%20%20%20%207%7C%20(PB2)%20%20LEDs%20-%20links%20unten%20%7C%20rechts%20oben%09%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20LEDs%20-%20rechts%20unten%20%7C%20links%20oben%09(PB4)%20%7C3%20%20%20%20%20%206%7C%20(PB1)%20%20LEDs%20-%20mitte%20links%20%7C%20mitte%20rechts%09%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20Ground%09%09%09%09%09%09%09%09(GND)%20%7C4%20%20%20%20%20%205%7C%20(PB0)%20%20LED1%09%09%09%09%09%09%09%09%5D%0A%20*%09%09%09%09%09%09%09%09%09%09%09%09%09%20%20%2B——–%2B%0A%20*%0A%20*%2F%20%0A%0A%23define%20F_CPU%2012800UL%20%2F%2FDalay%20anpassen%20wegen%20Fusebit%0A%2F%2F%23define%20F_CPU%20960000UL%20%2F%2FDalay%20anpassen%20wegen%20Fusebit%0A%0A%23define%20LED1_PIN%20%20%20%20%20%20%20%20PB0%0A%23define%20Taster%09%09%09PB3%0A%23define%20DELAY_MAX%20%20%20%20%20%20%20(512)%0A%23define%20DELAY_MIN%20%20%20%20%20%20%20(0)%0A%0A%23include%20%3Cavr%2Fwdt.h%3E%0A%23include%20%3Cstdint.h%3E%20%0A%23include%20%3Cutil%2Fdelay.h%3E%20%0A%23include%20%3Cavr%2Fio.h%3E%20%0A%23include%20%3Cavr%2Finterrupt.h%3E%20%0A%23include%20%3Cavr%2Fpower.h%3E%20%0A%23include%20%3Cavr%2Fsleep.h%3E%0A%0Aint%20Augenanzahl%20%3D%200%3B%20%2F%2F%20einfacher%20Z%C3%A4hler%20f%C3%BCr%20W%C3%BCrfel%20Augenanzahl%0Auint16_t%20min%2C%20sek%3B%0A%0Aint%20StartStopAni(int%20AnzahlBlinken)%3B%0A%0A%2F%2F%20Leere%20Interrupt-Routine%0AISR(PCINT0_vect)%0A%7B%0A%7D%0A%0A%09%0A%0Aint%20main(void)%0A%7B%0A%0A%09%2F%2FWatchdog%20ausschalten!%0A%09MCUSR%20%26%3D%20~(1%3C%3CWDRF)%3B%0A%09WDTCR%20%7C%3D%20(1%3C%3CWDCE)%20%7C%20(1%3C%3CWDE)%3B%0A%09WDTCR%20%3D%200×00%3B%0A%09%09%0A%09DDRB%20%3D((1%3C%3CLED1_PIN)%20%7C%20(1%3C%3CPB1)%20%7C%20(1%3C%3CPB2)%20%7C%20(1%3C%3CPB4))%3B%20%2F%2F%20Ports%20auf%20Ausgang%0A%09DDRB%3D%20~(1%3C%3CTaster)%3B%09%09%09%09%09%09%09%09%09%09%2F%2F%20Port%20auf%20Eingang%0A%09PORTB%20%7C%3D%20(1%3C%3CTaster)%3B%09%09%09%09%09%09%09%09%09%2F%2F%20Pullup%20f%C3%BCr%20Eingang%0A%09%0A%09StartStopAni(30)%3B%0A%09%0A%09PORTB%20%3D0b00001000%3B%0A%09%0A%09while%20(1)%20%2F%2F%20Endlos%20Schleife%0A%09%7B%20%0A%09%09for%20(min%3D10%3B%20min%3E%3D1%3B%20min–)%20%20%2F%2FSchleifen-konstruckt%2C%20wegen%20Zeit%20bis%20zum%20einschlafen%0A%09%09%7B%0A%09%09%09for%20(sek%3D1500%3B%20sek%3E%3D1%3B%20sek–)%0A%09%09%09%7B%0A%09%09%09%09_delay_ms(50)%3B%0A%09%09%09%09%09%09%09%09%0A%09%09%09%09if%20(!(PINB%20%26%20(1%3C%3CTaster)))%09%2F%2F%20Abfrage%20ob%20Switch%20gedr%C3%BCckt%0A%09%09%09%09%7B%0A%09%09%09%09%09%2F%2F%20Schleifenwerte%20nach%20bet%C3%A4tigen%20der%20Taste%20wieder%20hoch%20setzen%0A%09%09%09%09%09min%3D10%3B%20%0A%09%09%09%09%09sek%3D1500%3B%20%0A%09%09%09%09%09%0A%09%09%09%09%09PORTB%20%3D0b00001000%3B%0A%09%09%09%09%09_delay_ms(500)%3B%09%20%2F%2F%20kurze%20Pause%20-%20alle%20LEDs%20kurz%20aus%2C%20damit%20man%20sieht%20der%20W%C3%BCrfel%20w%C3%BCrfelt.%0A%09%09%09%09%09%0A%09%09%09%09%09switch(Augenanzahl)%09%2F%2F%20i%20Auswerten%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09case%200%3A%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%2F%2F%20Zahl%201%20–%3E%20i%3D0%0A%09%09%09%09%09%09%09PORTB%20%3D0b00000001%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09case%201%3A%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%2F%2F%20Zahl%202%20–%3E%20i%3D1%0A%09%09%09%09%09%09%09PORTB%20%3D0b00000100%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09case%202%3A%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%2F%2F%20Zahl%203%20–%3E%20i%3D2%0A%09%09%09%09%09%09%09PORTB%20%3D0b00000101%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09case%203%3A%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%2F%2F%20Zahl%204%20–%3E%20i%3D3%0A%09%09%09%09%09%09%09PORTB%20%3D0b00010100%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09case%204%3A%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%2F%2F%20Zahl%205%20–%3E%20i%3D4%0A%09%09%09%09%09%09%09PORTB%20%3D0b00010101%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09case%205%3A%0A%09%09%09%09%09%09%7B%0A%09%09%09%09%09%09%09%2F%2FZahl%206%20–%3E%20i%3D5%0A%09%09%09%09%09%09%09PORTB%20%3D0b00010110%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09%0A%09%09%09%09%09%2F%2F%20Port%20wieder%20auf%20Eingang%20setzen%20(Pullup)%0A%09%09%09%09%20%20%20%20PORTB%20%7C%3D%20(1%3C%3CTaster)%3B%0A%0A%09%09%09%09%7D%0A%09%09%09%09Augenanzahl%2B%2B%3B%09%2F%2F%20bei%20jedem%20Schleifendurchlauf%20i%20Erh%C3%B6hen%0A%09%09%09%09if%20(Augenanzahl%3D%3D6)%20%2F%2F%20Wenn%20i%20%3D%206%20dann%20i%20wieder%20auf%200%20setzen%0A%09%09%09%09%7B%0A%09%09%09%09%09Augenanzahl%3D0%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09%0A%09%09%09StartStopAni(30)%3B%0A%0A%09%09%09%2F%2F%20Den%20ADC%20deaktivieren%2C%20brauchen%20wir%20nicht%20m%C3%BCsste%20aber%20pre%20Default%20aus%20sein.%0A%09%09%09power_adc_disable()%3B%0A%09%09%09%09%0A%09%09%09%2F%2F%20Pin-Change%20Interrupt%20f%C3%BCr%20die%204%20Taster%20erlauben%0A%09%09%09GIMSK%20%3D%20(1%3C%3CPCIE)%3B%0A%09%09%09PCMSK%20%7C%3D%20(1%3C%3CPB3)%3B%0A%09%09%0A%09%09%09sei()%3B%0A%09%09%09%0A%09%09%09PORTB%20%3D0b00001000%3B%20%2F%2F%20Sollten%20LEDs%20noch%20Leuchten%20vor%20Schlafen%20ausschalten.%0A%09%09%09%09%0A%09%09%09set_sleep_mode(SLEEP_MODE_PWR_DOWN)%3B%0A%09%09%09sleep_mode()%3B%0A%09%09%09%09%0A%09%09%09%2F%2F%20****************%20Aufwachen%20und%20alles%20f%C3%BCr%20den%20Reset%20%C3%BCber%20Watchdog%20vorbereiten%20******%0A%09%09%09wdt_enable(WDTO_1S)%3B%20%2F%2F%201s%20Sekunden%09Watchdog%20einstellen%09%0A%09%09%09wdt_enable(WDTO_30MS)%3B%20%2F%2F%2030ms%20Sekunden%09Watchdog%20einstellen%09%09%09%09%0A%09%09%09%09%09%09%09%09%09%09%0A%09%09%09%09%2F%2Ftu%20nix%20und%20warte%20auf%20den%20Biss%20des%20Wachhundes%0A%09%09%09%09_delay_ms(5000)%3B%20%2F%2F%20Der%20Wachhund%20ist%20auf%20eine%20Sek%20gestellt.%20Im%20Delay%20sind%20es%205%20Sekunden.%20-%20Also%20Reset%0A%09%09%09%09%2F%2F%20wdt_reset()%3B%0A%09%09%7D%0A%09%09%0A%09%7D%0A%09return%20(0)%3B%0A%7D%0A%0A%0A%0A%0Aint%20StartStopAni(int%20AnzahlBlinken)%0A%7B%0A%09for%20(int%20blink%3D0%3B%20blink!%3DAnzahlBlinken%3B%20blink%2B%2B)%20%2F%2F%20Blinken%20bis%20der%20Watchdog%20dem%20Spuk%20ein%20Ende%20macht%20oder%20die%20AnzahlBlinken%20erreicht%20ist%0A%09%7B%0A%09%09PORTB%20%5E%3D%20(1%3C%3CLED1_PIN)%3B%20%2F%2FToogle%20(Ein-%2C%20Ausschalten%20der%20LED%0A%09%09_delay_ms(50)%3B%20%2F%2F%20Warten%20damit%20LED%20eine%20Change%20hat%20zu%20blinken%0A%09%7D%0Areturn%20(0)%3B%09%0A%7D%0A%0A%0A%0A%0A%09%09%2F%2F%20wdt_reset()%3B%0A%0A%0A“ message=““ highlight=““ provider=“manual“/]

 

 

Veröffentlicht unter Elektronik, Microcontroller, Wochenend Projekte | Schreib einen Kommentar

Wochenend-Projekt: elektronischer Würfel v1.01

Das Krippenlicht muss warten. Nachdem mein Board so gut funktioniert hat, wollte ich ein lange von mir geplantes Projekt starten, – einen elektronischen Würfel. Das Programm und die Platine sind recht trivial und meinen Elektronik- und Programmierkenntnissen entsprechend. Aber er funktioniert! Das Programm in seiner ursprünglichen Form war mit einer Switch() Auswahl, welche ich aber den ganzen Samstag nicht zum laufen bekommen habe. Sogar der Debugger von meinem Entwicklungsstudio ist mit Programmfehler ausgestiegen, so dass das ich den Debugger im Windows immer wieder neu starten musste. Am Abend hatte ich die Nase voll, weil ich weder den Fehler finden konnte noch mit dem Debugger irgend etwas herausfinden konnte. Ich setzte mich mit einem Arbeitskollegen in Verbindung (der beruflich embedded Code schreibt) und zusammen konnten wir die Fehler mit dem Switch() nicht finden. So dann haben wir das Problem mit vielen IF() Anweisungen gelöst.

Kurze Erklärung:
In einer Endlosschleife wird bei jedem Durchlauf ein Zähler (i) um Eins (i++) erhöht und ein Input abgefragt. Wenn der Zähler 5 hat (Augenzahl 0 bis 5 sind 6) wird der Zähler auf 0 gesetzt. Wenn es einen Input gibt (Switch gedrückt) Wird der Zähler i ausgewertet und je nachdem welchen Wert i beim drücken des Switches hatte die dementsprechenden LEDs eingeschaltet. Der Zufallsgenerator ist sozusagen der Mensch, der den Switch drückt, – weil er nicht wissen kann wie hoch i in dem Moment des Drückens ist.

Weitere Anmerkung:
ich hatte als Widerstände nur 330 Ohm und habe diese genommen. Da auf manchen Ausgängen zwei LEDs sind, wären hier niedriger Widerstände besser um das Leuchten der LEDs gleichmäßiger zu bekommen. Als Batterie kann von 3,3Volt bis 5 Volt genommen werden (ich habe 4,5v (3xAA)).

 

Bild von der Schaltung:

El. Würfel

 

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Attiny13_Wuerfel_v1_01.c%0A%20*%0A%20*%20Created%3A%2004.03.2018%2009%3A57%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%2F%20%0A%0A%23include%20%3Cavr%2Fio.h%3E%0A%23include%20%3Cutil%2Fdelay.h%3E%0A%0A%0A%0Aint%20main(void)%0A%7B%0A%09DDRB%20%3D%200b00010111%3B%20%2F%2F%20Datenrichtungsbit%201%20%3D%20Ausgang%0A%09PORTB%20%3D0b00001000%3B%20%2F%2F%20Pullup%20Wiederstand%201%20%3D%20Ein%20(f%C3%BCr%20Eingang)%0A%20%20%0A%09int%20i%3D0%3B%20%2F%2F%20einfacher%20Z%C3%A4hler%20f%C3%BCr%20W%C3%BCrfel%20Augenanzahl%0A%09%0Awhile%20(1)%7B%20%2F%2F%20Endlos%20Schleife%0A%0A%09%09if(PINB%20!%3D%200b00001000)%20%2F%2F%20Abfrage%20ob%20Switch%20gedr%C3%BCckt%20%0A%09%09%09%7B%0A%09%09%09%09%0A%09%09%09%09%20_delay_ms(60)%3B%09%20%2F%2F%20kurze%20Pause%0A%09%09%09%09%09%09%09%09%0A%09%09%09%09if%20(i%3D%3D0)%09%2F%2F%20i%20Auswerten%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%201%20–%3E%20i%3D0%0A%09%09%09%09%09%09PORTB%20%3D0b00000001%3B%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D1)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%202%20–%3E%20i%3D1%0A%09%09%09%09%09%09PORTB%20%3D0b00000100%3B%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D2)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%203%20–%3E%20i%3D2%0A%09%09%09%09%09%09PORTB%20%3D0b00000101%3B%0A%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D3)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%204%20–%3E%20i%3D3%0A%09%09%09%09%09%09PORTB%20%3D0b00010100%3B%0A%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D4)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%205%20–%3E%20i%3D4%0A%09%09%09%09%09%09PORTB%20%3D0b00010101%3B%0A%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D5)%0A%09%09%09%09%7B%0A%09%09%09%09%09%2F%2FZahl%206%20–%3E%20i%3D5%0A%09%09%09%09%09PORTB%20%3D0b00010110%3B%0A%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09_delay_ms(1000)%3B%20%2F%2F%20kurze%20Pause%2C%20damit%20W%C3%BCrfel%20angezeigt%20wird%0A%09%09%09PORTB%20%3D0b00001000%3B%20%2F%2F%20nach%20Pause%20alle%20LEDs%20wieder%20ausschalten%0A%09%09%09%0A%09%09%09%0A%0A%09%09%09%7D%09%0A%09%09i%2B%2B%3B%09%2F%2F%20bei%20jedem%20Schleifendurchlauf%20i%20Erh%C3%B6hen%20%0A%09%09if%20(i%3D%3D6)%20%2F%2F%20Wenn%20i%20%3D%206%20dann%20i%20wieder%20auf%200%20setzen%0A%09%09%09%7B%0A%09%09%09%20i%3D0%3B%20%0A%09%09%09%7D%0A%09%0A%20%20%20%20%7D%0A%09return%20(0)%3B%0A%7D%0A%0A%0A“ message=“Source zu AtTiny13_Wuerfel_v1_01″ highlight=““ provider=“manual“/]

Veröffentlicht unter Elektronik, Microcontroller, Wochenend Projekte | Schreib einen Kommentar

Wochenend-Projekt: Entwicklungsboard für AtTiny13

Vor einigen Jahren hatte ich für unsere Weihnachtskrippe eine „Kerzenlicht Simulation“ mit einem ATtiny13 und einer LED gebaut. Meine Tochter und ich fanden das Licht letztes Weihnachten zu dunkel und wir wollten mit einer helleren LED das ganze Projekt noch einmal nachbauen. Leider nachdem wir die passende LED gefunden hatten, haben wir feststellen müssen, dass unser ISP-Programmiergerät sich nicht mehr ohne weiteres unter Windows 10 installieren lies. Außerdem war mein selbstgebasteltes Experimentierboard nicht sorgfältig gelagert worden und es haben sich ein paar Kabel gelöst. Also habe ich mir ein neues ISP-Programmiergerät, welches unter Windows 10 läuft gekauft und diese Wochenende endlich Zeit gefunden, das Experimentierboard zu bauen.

Mit dem Programm BlackBoard habe ich einen Bauplan auf Lochraster erstellt. Das Programm ist einfach zu bedienen und für meine Zwecke vollkommen ausreichend.

Lochrasterplatine:

Kurze Erklärung:

  • Der Switch wird zum Reseten des Microcontroller gebraucht. (Falls sich das Programm mal aufhängt oder ein Neustart von Nöten ist)
  • Die LED (Wenn der Juper gesetzt ist) Zeigt an wenn der Microkontroller beschrieben oder gelöscht wird. Ist der Jumper nicht gesetzt, so kann der Port ohne LED genutzt werden.
  • Der LP2950 wandelt die Eingangsspannung (im Plan der rote Jumper = Batterieanschluss) auf 5V herunter, so kann Theoretisch eine Batterie zwischen 5V und 30V genommen werden. Mir langen 5V – 12V.

Hier das Board:

Kleine Programm zum Testen des Boards:

Lässt die LED blinken, wenn der Jumper gesetzt ist.

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Blink%20ISP%20001.c%0A%20*%0A%20*%20Created%3A%2025.02.2018%2008%3A57%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%2F%20%0A%0A%23include%20%3Cavr%2Fio.h%3E%0A%23include%20%3Cutil%2Fdelay.h%3E%0A%0A%0Aint%20main(void)%0A%7B%0A%09DDRB%20%3D%201%3B%0A%0A%20%20%20%20while%20(1)%20%0A%20%20%20%20%7B%0A%09%09PORTB%20%3D1%3B%0A%09%09_delay_ms(5)%3B%0A%09%09PORTB%20%3D0%3B%0A%09%09_delay_ms(20)%3B%0A%20%20%20%20%7D%0A%7D“ message=“Blink Programm“ highlight=““ provider=“manual“/]

Veröffentlicht unter Elektronik, Microcontroller, Wochenend Projekte | Schreib einen Kommentar

Wartungsarbeiten

Heute wieder ein wenig die Seite auf Vordermann gebracht.
Bilder vom Event hinzugefügt.

 

Veröffentlicht unter Allgemein, Wartungsarbeiten | Schreib einen Kommentar

Wartungsarbeiten

Heute die Seite wieder etwas auf Vordermann gebracht.

Veröffentlicht unter Wartungsarbeiten | Schreib einen Kommentar