Danke für die Antwort. Dann werde ich wohl ein großes Netzteil neben meine Tastatur stellen müssen trotzdem Frage ich mich, wie die 12V und 24V Led Streifen geschaltet sind. Wird da die Spannung auf 5 v Runter geregelt? Das wäre doch eine große Energie Verschwendung.
Beiträge von Killerawft
-
-
Hallo.
Ich möchte eine LED Matrix aus 122 WS2812b LED's bauen. Da die LED's die Tasten einer Tastatur beleuchten sollen, kann ich leider nicht auf die Streifen zurück greifen. Würde ich jetzt alle LED's parallel an eine 5V Spannungsversorgung schalten, würden die etwas mehr als 9A verbrauchen, bei 75mA pro LED. Deshalb würde ich gerne den Strom verringern, indem ich eine 12V oder 24V Spannungsquelle nehme und die LED's in reihe schalte, wie das auf den Stripes auch gemacht wird.
Da ich mit Google keinerlei Hilfe gefunden habe wollte ich hier nochmal nach einer zweiten meinung fragen, ob meine Idee so gut ist.Ich würde die LED's einfach so in reihe schalten, dass ich den GND/VSS Ausgang der ersten LED mit dem VDD Ausgang der zweiten verbinde usw. jeweils mit einem 100nF Kerko an VDD jeder LED. Am liebsten würde ich das mit 24V und jeweils 6 LED's in reihe machen.
Habt ihr damit schon Erfahrungen gemacht, ob das für die LED's gesund ist und ob die Bus Kommunikation dann noch bis zur letzten LED funktioniert?
Killerawft
-
Ich benutze zum Empfangen von Daten einen anderen, viel flexibleren Code, den ich irgendwo im internet gefunden habe.
Ich hab dein Programm mal so umgeschrieben.
Der vorteil ist, dass du, egal in welchem Schritt des Programms du bist, etwas empfangen kannst und das dann abfragen kannst, wann du willst.
Der nachteil ist, dass das was vom PC gesendet wird immer eine bestimmte länge haben muss.benkly: Bei mir hat der Compiler nichts gesagt.
Code
Alles anzeigen$regfile = "m88def.dat" $crystal = 8000000 $hwstack = 100 $swstack = 100 $framesize = 100 $baud = 9600 Config Portd.5 = Output 'Für RS232 Empfang Enable Urxc 'Interrupt, der auslößt, sobald etwas empfangen wird On Urxc Onrxd 'Wird der Interrupt Urxc ausgelößt springt er zum Label Onrxd Dim Empfangen As byte dim s as string *255 Do Print "hallo" Print "gehts noch???" Select Case Empfangen Case "0" Portd.5 = 0 Print "Led aus" Case "1" Portd.5 = 1 Print "led ein" End Select Wait 2 Loop 'Label vom Interrupt Onrxd: S = S + Chr(udr) If Len(s) = 3 Then 'Die länge (Hier 3) immer einen höher als die anzahl der zeichen die man empfangen möchte, wegen dem CR-LF hinten dran S = Left(s , 2 ) 'Erstes Zeichen abschneiden. Hier die tatsächliche Länge vom Empfangenen Empfangen = Val(s) 'Inhalt von dem String S in die Byte Variable Empfangen schreiben S = "" 'String für die nächsten Zeichen leeren. End If Return End
-
Ja ich benutze bascom und hab auf den RC5 Code gehofft. Naja dann muss ich google wohl nochmal ein wenig quälen.
-
Hallo leute.
Ich habe mir vor einiger Zeit eine Fernbedienung gekauft, mit der ich meinen eigenen RGB Controller steuern möchte. Das ist die Fernbedienung.
Ich möchte die Signale der Fernbedienung mit einem TSOP 1836 Empfänger auswerten. Ich habe den Empfänger genau so wie im Datenblatt beschrieben und den ausgang des Empfängers an einen Interrupt eingang geschlossen und den µC so programmiert, dass er mir Adresse und Kommando per RS232 an den PC schickt. Jedoch bekomme ich als Adresse und Kommando nur 255 127. Was ja soviel wie "nichts kommt an" bedeutet.
Kann mir jemand sagen, wie ich meinen µC dazu bekomme, auf die Komandos der Fernbedienung zu hören?
-
Ja es funktioniert, wenn ich die LED's wie rechts verschalte wunderabr... ich erinner mich bei der Schaltung auch wieder schwach an das Thema Halbleiter in der Schule und dass der Lehrer sagte, dass man Transistoren möglichst nur so schalten sollte
Vielen Dank für eure schnelle Hilfe!
-
Ich habe die 5 Volt mit widerstand auf der Basis und die 12 Volt auf dem Collector und die LED's an den Emitter. Ich hab die Schaltung zum testen auch mal auf einem Steckbrett mit 5 Volt aufgebaut und als der Transistor geschaltet hat, hatte die CE Strecke 2 ohm, also er hat durchgeschaltet.
-
Hallo
Ich bin gerade bei dem Aufbau eines RGB Controllers. Dieser soll mit einem Attiny2313 Supferlux LED's schalten. Ich hab die LED's zu 6 mal 3 paaren für 12 Volt zusammengeschaltet. Die drei Farben der LED's will ich mit BC337 Transistoren schalten. Ich hab das ganze auch schon aufgebaut. Die Transistoren shcalte ich mit 5 Volt vom µC über einen 2,2k Ohm Widerstand. Bevor ich den µC eingesetzt habe, hab ich die Schaltung der Transistoren testen wollen, jedoch ist das Problem, dass die Transistoren die 12 Volt für die LED's nicht richtig schalten. Die Transistoren schalten nur ca 4 Volt durch, selbst wenn die 5 Volt ohne Widerstände an der Basis anliegen.
Weiss jemand was ich da machen kann? ich bin da echt ratlos
-
Den programmiere ich selbst für meine rgb led leiste. Aber der wird auch mit vorschau sein, also kannst du den dann zweckentfremden
-
Ich arbeite gerade an einer RGB LED leiste, mit Effekteditor für den PC.
Wenn du dich noch zwei bis drei wochen geduldest könnte ich den fertig schreiben und ein wenig abändern für dich.
-
Dass das LCD Rechts schwächer ist als links liegt am LCD selbst.
-
Also ich hab das mal bei mir getestet mit nem M32 und nem 16*4 lcd und alles funktionierte super und wurde auch super angezeigt.
Wenn das LCD Komische Zeichen anzeigt, solltest du mal checken, ob einer der Chips heiss wird und ob alles richtig angeschlossen ist am lcd.
-
Das sollte so Funktionieren.
Aber wenn du schon mit Subs arbeitest solltest du auch im Kopf
$hwstack = 32 'im Speicher werden für den Hardware-Stack 32 Byte reserviert
$swstack = 32 'im Speicher werden für den Software-Stack 32 Byte reserviert
$framesize = 32 'im Speicher werden für den Frame 32 Byte reserviertschreiben. In dem Link den ich dir gegeben habe steht, was das für einzelne sachen sind.
-
Ich erbarme mich mal, da ich eh so wenig schreibe
Der Text, der nur einmal am Anfang auf dem LCD angezeigt werden soll kommt VOR die Do Loop. Der Text, der beim Taster drücken angezeigt werden soll, kommt in die jeweilige SUB rein. Vorher noch ein CLS, damit das LCD auch "sauber" ist wenn der neue Text angezeigt werden soll.
Wenn der Anfangstext auf dem LCD nochmal angezeigt werden soll brauchst du dafür eine weitere Bedinung.Und für weitere Fragen lies Hier -> http://halvar.at/elektronik/kleiner_bascom_avr_kurs/
-
ich glaube diese Anleitung bringt dich da sehr viel weiter Cube 3x3x3 leicht gemacht (mit Fotos und Schaltplänen)
und als blutiger Anfänger in sachen LED's solltest du erstmal damit anfangen und dich langsam weiter arbeiten Reihen + Parallelschaltung von LEDs -
sorry ganz vergessen. Also wie du schon richtig vermutet hast schreibe ich mein Programm in Bascom.
Und hier ist der Code. Das Meiste ist vom Beispielprogramm.
Code
Alles anzeigen$regfile = "m32DEF.dat" 'es handelt sich um einen ATmega32 $crystal = 16000000 'der eingebauter RC-Oszillator läuft mit 1 Mhz $hwstack = 32 'im Speicher werden für den Hardware-Stack 32 Byte reserviert $swstack = 32 'im Speicher werden für den Software-Stack 32 Byte reserviert $framesize = 40 'im Speicher werden für den Frame 40 Byte reserviert $lib "i2c_twi.lbx" 'Lib umd Hardware I2C zu benutzen 'LCD Konfigurieren Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portb.4 , Rs = Portd.7 'Ports bestimmen Config Lcd = 16 * 4 'LCD Maße Initlcd 'LCD Initialisieren Cls 'Bildschirm löschen Cursor Off 'Cursor nicht anzeigen 'I2C Konfigurieren Config Twi = 400000 ' TWI Takt Const Rtcw = &HA0 'Slaveadresse zum schreiben Const Rtcr = &HA1 'Slaveadresse zum lesen 'Eingänge Konfigurieren Config Pind.6 = Input 'Blau Config Pind.5 = Input 'Grün Config Pind.4 = Input 'Rot Config Pind.3 = Input Config Pind.2 = Input 'Eingänge Benennen Blau Alias Pind.6 Gruen Alias Pind.5 Rot Alias Pind.4 'Variablen 'Um sie auf dem LCD anzuzeigen in HEX Dim Sekundelcd As Byte Dim Minutelcd As Byte Dim Stundelcd As Byte Dim Taglcd As Byte Dim Monatlcd As Byte Dim Jahrlcd As Byte Dim Wochentaglcd As Byte 'Werte kommen vom RTC werden aber nicht in HEX umgewandelt und nicht auf dem LCD angezeigt. Sind zur weiteren Verarbeitung gedacht. Dim Sekundeakt As Byte Dim Minuteakt As Byte Dim Stundeakt As Byte Dim Tagakt As Byte Dim Monatakt As Byte Dim Jahrakt As Byte Dim Wochentagakt As Byte 'Variable, die an den RTC gesendet wird, um die Zeit zu stellen. Dim Sendtime As Byte Dim Tm(7) As Byte Dim I As Byte Dim Temp As Byte 'Temporäre Variable zum kurzen Zwischenspeichern 'Sub Funktionen Declare Sub Gettime() Declare Sub Settime(byval Register As Byte , Byval Wert As Byte) '*********************** Hauptprogramm ********************* Do If Rot = 1 Then Sendtime = Minuteakt Incr Sendtime If Sendtime > 59 Then Sendtime = 0 Call Settime(3 , Sendtime ) 'Geänderte Zeit senden End If If Blau = 1 Then Sendtime = Stundeakt Incr Sendtime If Sendtime > 23 Then Sendtime = 0 Call Settime(4 , Sendtime ) 'Geänderte Zeit senden End If If Gruen = 1 Then Sendtime = Tagakt Incr Sendtime Call Settime(6 , Sendtime ) 'Geänderte Zeit senden End If Call Gettime() 'Zeit empfangen Locate 1 , 1 Lcd "Zeit: " ; Hex(stundelcd) ; ":" ; Hex(minutelcd) ; ":" ; Hex(sekundelcd) Locate 2 , 1 Lcd "Datum: " ; Hex(taglcd) ; "." ; Hex(monatlcd) ; "." ; Hex(jahrlcd) Locate 3 , 1 Lcd "Wochentag: " ; Hex(wochentaglcd) Waitms 100 Loop '******************** SUB's ************************ Sub Gettime() 'Daten vom RTC Empfangen für HEX Variablen I2cstart 'generate start I2cwbyte &HA0 'write addres I2cwbyte 2 'select second register I2cstart 'generate repeated start I2cwbyte &HA1 'write address for reading I2crbyte Sekundelcd , Ack 'read seconds I2crbyte Minutelcd , Ack 'read minuts I2crbyte Stundelcd , Ack 'read hours I2crbyte Jahrlcd , Ack 'read year I2crbyte Taglcd , Ack 'read day I2crbyte Wochentaglcd , Ack 'read weekday I2crbyte Monatlcd , Nack 'read month I2cstop 'generate stop 'Daten vom RTC Empfangen für weiterzuverarbeitende Variablen I2cstart 'generate start I2cwbyte &HA0 'write addres I2cwbyte 2 'select second register I2cstart 'generate repeated start I2cwbyte &HA1 'write address for reading I2crbyte Sekundeakt , Ack 'read seconds I2crbyte Minuteakt , Ack 'read minuts I2crbyte Stundeakt , Ack 'read hours I2crbyte Jahrakt , Ack 'read year I2crbyte Tagakt , Ack 'read day I2crbyte Wochentagakt , Ack 'read weekday I2crbyte Monatakt , Nack 'read month I2cstop End Sub Sub Settime(byval Register As Byte , Byval Wert As Byte) Temp = Makebcd(wert) I2cstart I2cwbyte &HA0 ' PCF 8583 Adresse schreiben I2cwbyte Register ' Register ausgewählt I2cwbyte Temp 'Hier kommt der Wert hin der in das Register geschrieben werden soll I2cstop Waitms 100 End Sub
Edit: Ich hab mein Programm mal um deinen Teil erweiter und soweit klappt das auch schon ganz gut. Jedoch ist noch mein Problem, dass irgendwie nur bis 10 gezählt wird und dann ab 17 erst wieder und dann kommt die 24, dann die 37 und dann die 57 und dann wird das bei mir schon automatishc auf 0 zurück gesetzt.
Das Aktuelle Programm ist jetzt auch da oben. -
Hallo liebe Bastler,
Ich bin gerade in der Entwicklung einer Schaltung, in der ich mit dem Atmega 32 die Uhrzeit aus dem PCF8583 Auslesen und auf einem LCD anzeigen möchte.
Das empfangen und senden der Uhrzeit klappt schon und Sie läuft seit einem Tag eigentlich ganz gut. Jetzt ist jedoch das Problem, dass ich auch mal die Uhr umstellen möchte und da kommt meine erste Frage:Wie kann ich bei dem RTC z.b. nur die Minuten ändern oder nur die Stunden oder Tage?
Und meine Zweite Frage ist, wieso zählt er zwar die Uhr richtig, aber nicht das Datum weiter? seit gestern sagt er es ist der 12.1.11.
-
-
-