PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 Tic Tac Toe



Virus
05.12.2009, 14:11
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.

Virus
05.12.2009, 15:48
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!

Virus
05.12.2009, 16:17
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

Virus
05.12.2009, 16:48
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

Xandi11
05.12.2009, 16:57
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

Virus
05.12.2009, 17:00
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?!

Virus
05.12.2009, 17:06
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.

Virus
05.12.2009, 17:09
was sagt denn nun das Datenblatt?

KingTobi
05.12.2009, 17:13
Liess selbst, Seite 287

Virus
05.12.2009, 17:26
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.

Virus
05.12.2009, 17:35
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?

Xandi11
06.12.2009, 08:46
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...

Virus
06.12.2009, 11:40
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 ?

Dirk
06.12.2009, 12:29
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

SlyD
06.12.2009, 13:05
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

Virus
06.12.2009, 13:43
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?!

Virus
06.12.2009, 14:03
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.

Virus
06.12.2009, 15:56
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.

Xandi11
06.12.2009, 16:39
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.

Virus
06.12.2009, 18:17
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.

Xandi11
06.12.2009, 18:51
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.

Xandi11
06.12.2009, 19:01
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.

Xandi11
06.12.2009, 19:51
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?!

Xandi11
06.12.2009, 21:17
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.

Xandi11
06.12.2009, 21:27
das ist natürlich eine andere Sache ... aber vom Prinzip

es kommt dann auf den strom, den der verbraucher benötigt, draufan

Virus
09.12.2009, 14:31
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.

SlyD
09.12.2009, 14:50
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 ;)

Xandi11
09.12.2009, 15:04
schwarze led sind doch auch ganz schön anzusehen :cheesy: ... leider nur einmal

Virus
09.12.2009, 15:11
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.

Virus
09.12.2009, 15:34
jagut, dann nimm ich 150Ohm.

Xandi11
09.12.2009, 20:32
Probieren geht über Studieren ... heißt es doch 8)