Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 Tic Tac Toe
Hallo RN,
inspriert durch eineige 4-Gewinnt versuche wollte ich meinem RP6 mal ein Tic Tac Toe spiel auf einer EXP spendieren. Steuern werde ich sie mit der M32, ich hab nur ein bischen angst das diese dafür zu klein ist.
Für neun eingebetaster reicht ein ADC,
und für das spielfeld brauche ich 9 I/0 Pins.
die duoleds wollte ich mit 9 transistoren steuern, die angedachten duoleds haben 3anschlüsse, also muss man das ganze als 3x6 led feld sehen, und dann verpasse ich jeder spalte und jeder zeile ein transistor und kann mit 9transitoren 18leds (9duo) steuern.
Bei meiner Art der Ansteuerung kann aber nur eine LED angesteuert werden, also muss ich am ende des spiels 9i/0 soschnell hintereinander schalten dass das meschliche auge denkt es würden alle leds gleichzeitig geschaltet werden.
Dazu kommt dann noch dass Programm selbst, welches den RP6 tic tac toe spielen lässt, das heist ich muss versuchen dass der RP6 weis wie er eine dreierkette verhindert, und solche tricks kennt, dass er sich drei ecken holt und der gegner so oder so seine niederlage nicht verhindern kann.
meint ihr die m32 packt das von der Rechenleistung?
KingTobi
05.12.2009, 15:03
Bei meiner Art der Ansteuerung kann aber nur eine LED angesteuert werden, also muss ich am ende des spiels 9i/0 soschnell hintereinander schalten dass das meschliche auge denkt es würden alle leds gleichzeitig geschaltet werden.
Das nennt sich Multiplexen und ist nichts besonderes.
meint ihr die m32 packt das von der Rechenleistung?
Ganz locker.
danke schon mal,
multiplexen ist ansteuerung über spalten und zeilen.
ich kann aber so nur eine LED nach der anderen zum leuchten bringen und wollte halt wissen ob die M32 auch schnell genug ist 9 I/0 Pins soschnell zu schalten das das menschliche Auge die angeschlossenen LEDs alle als eingeschaltet erkennt.
KingTobi
05.12.2009, 16:13
Hab ich doch schon gesagt, es geht!
Ich habe sowas letztens mit einem Atmega 8 mit 8MHz und mit 64 LEDs gemacht, auch das ging ohne Probleme!
oh ok,
vielen dank !!!!!!!!
KingTobi
05.12.2009, 16:21
Bedenke dabei aber das der Vorwiderstand der LEDs kleiner sein muss als im Dauerbetrieb.
Die Frequenz in der die LEDs geschaltet werden hab ich durch probieren rausgefunden.
Habs auch ohne Transistoren gemacht.
radbruch
05.12.2009, 16:45
Hallo
Beim Charlieplexing leuchtet auch immer nur eine LED:
http://www.youtube.com/watch?v=dboh5SFD29g
http://www.youtube.com/watch?v=r54xOzr0VDA
http://www.youtube.com/watch?v=uwCx0GrFykU
Gruß
mic
Vorwiderstand der LEDs kleiner sein muss als im Dauerbetrieb.
gibts da ne Formel oder eine Faustregel?
Habs auch ohne Transistoren gemacht.
wenn ich ohne transitoren mach, komme ich aber bei geringerem vorwiederstand als normal über die maximalen 20mA, oder macht das nichts wenn es nicht dauerbetrieb ist?
maximale 20mA auf dem I/0 Pin, gepulste Leds brauchen und vertragen mehr das weiß ich
http://www.zeux.at/node/13
Vl hilft dir dieser Link ...
KingTobi
05.12.2009, 16:58
maximale 20mA auf dem I/0 Pin, gepulste Leds brauchen und vertragen mehr das weiß ich
Und genau so verhällt es sich auch mit einen Ein bzw. Ausgang am µC
vielen Dank euch allen
was ist mit der Faustregel?
Der Vorwiederstandsrechner ist nicht schlecht, hier aber nicht von Nutzen
KingTobi
05.12.2009, 17:02
Noch was, wie kommst du eigentlich auf max. 20mA per Pin?!
steht so in der Anleitung vom RP6
Der Mikroprozessor kann über die I/0 Pins logische Zustände übergeben und empfangen und kleinere Lasten wie zB eine Led schalten (bis ca. 20mA)
KingTobi
05.12.2009, 17:08
Das Datenblatt zum Atmega32 sagt da was anderes.
was sagt denn nun das Datenblatt?
KingTobi
05.12.2009, 17:13
Liess selbst, Seite 287
warum steht in der Anleitung ein kleinerer wert ?
20mA sind doch viel schneller überschritten als 40mA, und man kauft transitoren die man nicht braucht.
KingTobi
05.12.2009, 17:31
20mA sind einfach ein sicherer Wert bei dem nichts passieren kann.
Gerade bei einer so teuren Erweiterungsplatine würde ich nicht an die Grenzen des machbaren gehen.
keine frage, nichts riskieren!
nun nochmal meine frage, wieweit soll ich vom normalen wiederstand abweichen, wenn die LEDs gepulst werden?
normalerweise nehme ich 150 ohm ,etzt villeicht 120?
Ich persönlich würde einfach ein Poti nehmen und dann den Wert während das Programm läuft verändern
KingTobi
06.12.2009, 11:29
Ein Poti reicht da ja nicht...
ich braüchte 9 und soviel platz ist doch auf einer EXP auch wieder nicht, und wenn nicht alle LEDs gleich hell sind ist doch auch doof.
was ist, gehen 120ohm ?
ich braüchte 9 und soviel platz ist doch auf einer EXP auch wieder nicht, und wenn nicht alle LEDs gleich hell sind ist doch auch doof.
Xandi11 hatte sicher nur gemeint, dass du zum Ausprobieren deiner Schaltung (z.B. auf einem Steckbrett) ein Poti nehmen sollst. Dann kannst du z.B. nur mit 1 LED einstellen, dass die Helligkeit stimmt. Dann mißt du den Poti-Widerstand und nimmst für alle LEDs den gemessenen Widerstand.
OK?
Gruß Dirk
Kommt natürlich auch auf die LED an, da die je nach Farbe und Typ andere Flussspannungen haben.
Aber für eine normale Low Current LED sind bei Dauerbetrieb >470 Ohm OK, die LEDs auf dem RP6 Mainboard haben 2200 Ohm (2K2) Vorwiderstände, ziehen dementsprechend wenig und sind trotzdem gerade noch hell genug ;)
d.h. Du kannst bei multiplex betrieb auch bei den 150 Ohm bleiben, halte ich persöhnlich für den *Dauerbetrieb* sogar für etwas wenig. Kommt aber wie gesagt auch auf die LEDs an.
Übrigens nochmal zu der Belastung der einzelnen Mikrocontroller Pins:
Jeder Pin für sich genommen schafft theoretisch maximal 40mA - aber wie auch im Datenblatt steht: ein ganzer Port mit je 8 Pins darf nur mit 100mA belastet werden! 8x40mA sind aber 320 und somit viel zu viel.
Und ALLE Ports zusammen max. 400mA!
Allerdings sollte man diese Grenzen natürlich besser nicht voll ausnutzen...
MfG,
SlyD
was mir grade so einfällt bei den genzen werten rund um den atmega32,
wenn ich einen servo an einem i/o steuere, muss da noch ein wiederstand zwischen? also nicht ein gehackter servo sondern nur das signal wird ausgegeben.
KingTobi
06.12.2009, 13:57
wenn ich einen servo an einem i/o steuere, muss da noch ein wiederstand zwischen? also nicht ein gehackter servo sondern nur das signal wird ausgegeben
Nein muss nicht, wieso sollte das auch?!
wie ich bereits sagte will ich kein risiko eingehen. und durch eine verbindung von µC zum servo könnten auch immer höhere ströme fließen als erlaubt. Da der servo über diese verbindung gesteuert wird ist das relativ unwahrscheinlich aber ich wollte halt noch ne bestätigung.
KingTobi
06.12.2009, 14:07
Es ist ja "nur" ein Signal.
Eventuell wird das Signal sogar zu schwach wenn da nochn Widerstand zwischen ist, hab das aber noch nicht ausprobiert.
Also nein, da muss kein Widerstand zwischen.
würdet ihr den rp6 in verschiedenen schwierigkeitsstufen tictactoe spielen lassen?
ich hab schon die dass er immer unentschieden spiel oder gewinnt
und bald villeicht auch noch das er fast zufällig zieht aber wenn möglich 3kette des gegners verhindert.
leider habe ich keine idee wie ich eine stufe dazwischen machen soll.
Das ist schon klar, dass man 9 Potis braucht.
Probiers einfach mal mit nur einer angeschlossenen LED aus und schau welchen Widerstand du brauchst.
KingTobi
06.12.2009, 17:11
Das ist schon klar, dass man 9 Potis braucht.
Wieso ist es das?! Ginge auch mit 6 bzw. 3.
stimmt, das ist doch grade der vorteil vom multiplexen, dass man von allem nur wenig braucht :-).
Da reicht auch ein einzelnes, von den Emittern der Tranistoren (alle miteinander verbunden) zur Masse.
ich braüchte 9 und soviel platz ist doch auf einer EXP auch wieder nicht, und wenn nicht alle LEDs gleich hell sind ist doch auch doof.
Xandi11 hatte sicher nur gemeint, dass du zum Ausprobieren deiner Schaltung (z.B. auf einem Steckbrett) ein Poti nehmen sollst. Dann kannst du z.B. nur mit 1 LED einstellen, dass die Helligkeit stimmt. Dann mißt du den Poti-Widerstand und nimmst für alle LEDs den gemessenen Widerstand.
OK?
Gruß Dirk
Genau das meinte ich.
Dass es auch mit weniger Widerständen funktioniert ergibt ja Sinn in einer endgültigen, fertigen Platine ... zum "Widerstandswert erforschen" :cheesy: ist eine LED und ein Poti zu verwenden eine gute Möglichkeit.
Die fertige Schaltung mit Potis aufzubauen ist ohnehin nicht sehr geschickt, da sich die Widerstandswert später ja nicht mehr ändern.
Theoretisch müsste es doch möglich sein die Spannung an diesem Pin (an der die LED hänge soll) zu messen (während das Programm läuft) und aus diesem Wert den Vorwiderstand zu berechnen?
KingTobi
06.12.2009, 18:54
Theoretisch müsste es doch möglich sein die Spannung an diesem Pin (an der die LED hänge soll) zu messen (während das Programm läuft) und aus diesem Wert den Vorwiderstand zu berechnen?
Nicht unbedingt.
Theoretisch müsste es doch möglich sein die Spannung an diesem Pin (an der die LED hänge soll) zu messen (während das Programm läuft) und aus diesem Wert den Vorwiderstand zu berechnen?
Nicht unbedingt.
Wieso?
KingTobi
06.12.2009, 19:10
Die Frage kannst du dir selbst beantworten wenn du darüber nachdenkst warum durch ein PWM eine LED dunkler leuchten kann, bzw. ein Multimeter bei einem PWM nicht 0 bzw. 5 Volt anzeigt.
Das ist klar ...
Ich habe das gerade probiert ... aber mit einem normalen Multimeter kann man sehrwohl eine Spannung messen.
Sie liegt dann z.B. bei 4,1V.
KingTobi
06.12.2009, 20:56
Das ist klar ...
Anscheinend nicht...
Dir ist schon klar das nicht 4,1V aus dem µC kommen?!
es können nur 5V oder 0V am µC anliegen ... das ist mir schon klar
aber das messgerät kommt sozusagen nicht mit dem schnellen wechsel zwischen 0 und 5V mit und zeigt somit einen Wert an.
Der müsste ja der arithmetische Mittelwert sein und dieser kann bei 4,1V liegen (siehe Link - das Foto ist etwas groß geraten :mrgreen:).
http://wkhost.webkicks.de/xandi/roboternetz/Sk1.jpg
KingTobi
06.12.2009, 21:20
Genau darauf wollte ich hinaus.
Aber jeder Verbraucher reagiert anders darauf.
das ist natürlich eine andere Sache ... aber vom Prinzip
es kommt dann auf den strom, den der verbraucher benötigt, draufan
ich habe gestern im www gelesen das man bis zum 16fachen hochgehen darf, würde also bedeuten bis 320mA pro LED.
Stimmt das ?
auf welchen wert soll ich mich jetzt einlassen?
bin ich richtig wenn ich die 4,1Volt und sagen wir 40mA benutze um den Widerstand zu errechnen?
Dann würd ich so 47 Ohm benutzen.
Zulässiger Impulsstrom und die Dauer dessen stehen im Datenblatt der jeweiligen LEDs. Das kann man nicht allgemein sagen.
Wenns billige noname Teile ohne Datenblatt sind, sollte man das besser etwas konservativer abschätzen...
> Dann würd ich so 47 Ohm benutzen.
Dann aber nur mit externen Treibernstufen (z.B. ULN28xx oder einzelne Transistoren) und nicht direkt an den Mikrocontroller.
Während Du dein Programm schreibst und testet solltest Du besser größere Widerstände verwenden (470 Ohm o.ä.) - sonst hast Du bei einem Fehler nämlich schwarze anstatt der roten LEDs ;)
schwarze led sind doch auch ganz schön anzusehen :cheesy: ... leider nur einmal
naja schwarz bleiben sie für immer,
gehts denn auch ohne größere erhöhung?
also statt 20 jetzt 30mA sonst aber alles gleich?
KingTobi
09.12.2009, 15:20
ich habe gestern im www gelesen das man bis zum 16fachen hochgehen darf, würde also bedeuten bis 320mA pro LED.
Stimmt das ?
Kommt auch sehr auf die Impulslänge an...
Aus Erfahrung kann ich dir sagen das die einfach einen Vorwiderstand nehmen kannst, den du auch nehmen würdest, wenn es nicht um Pulse gehen würde. Reicht immer.
jagut, dann nimm ich 150Ohm.
Probieren geht über Studieren ... heißt es doch 8)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.