Hallo,
ich bin da gerade so am bastel einer kleinen Punkteanzeige . ( z.b. die im Fussball 1:2 )
Klar den Doppelpunkt bekomme ich nicht hin aber man Könnte in der mitte den Strich zum leuchten bringen.
Problem
Das geht aber Irgenwie bei mir nicht ;-( was auch immer ich versuche , da läuft dann eine zahl in der mitte . pinMode(11, OUTPUT) wäre das
Problem
zur zeit zählt der ja nur nach delay(10) hoch
eingentlich wäre mein wunsch 2 Button zu haben auf A0,A1
Wenn man Jetzt A0 Klickt soll es eine zahl weiter zählen .
Drückt man jetzt A1 Button soll es umschalten und bei erneuten Klick von A0 eben die andere zahl eins weiter zählen . Kompliziert
Geht sowas Irgenwie ?
Gund : das ganze soll hinter eine Zielscheibe . löst nun a0 aus zählt er ein punkt . Ist Spieler 2 dran drückt man einmal A1 und nun sollte eben die andere seite zählen . Denke so ist das besser erklärt .Vieleicht hat jemand eine Idee ich bin totaler Anfänger und stehe auf dem schlauch . Danke für Eure Hilfe
int digit[10] = {0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111, 0b11111111, 0b1101111};
int digit1, digit2, digit3;
void setup()
{
for (int i = 2; i < 9; i++)
{
pinMode(i, OUTPUT);
}
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
}
void loop() {
Strich();
for (int j = 0; j <= 99; j++)
{
digit2 = j / 10;
digit1 = j % 10;
for ( int k = 0; k < 20; k++)
{
digitalWrite(12, LOW);
digitalWrite(10, HIGH);
dis(digit2);
delay(10);
digitalWrite(12, HIGH);
digitalWrite(10, LOW);
dis(digit1);
delay(10);
}
}
}
/// BLÖDSINN GEHT NOCH NICHT
void Strich() {
int i;
for(i=2; i<10; i++)
{
digitalWrite(i, LOW);
}
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void dis(int num)
{
for (int i = 2; i < 9; i++)
{
digitalWrite(i, bitRead(digit[num], i - 2));
}
}
Was sofort auffällt: Im setup() werden die Pins 2 bis 8, 10 und 12 auf Output gesetzt ... Hier läuft die Schleife bis inkl. i = 9 ... Das ist bestimmt noch nicht das Problem
P.S.: Und dann wäre vielleicht eine kleine Skizze der Hardware hilfreich.
Mein Vorschlag: Bringe erst einmal eine der 7-Segment-Anzeigen zum Laufen. Danach kann man daraus eine Funktion ableiten, die sich auf weitere Anzeigen umschalten lässt.
[Korrektur: Meine folgende Aussage habe ich zurückgenommen, nachdem ich die Hardware-Konfiguration gesehen habe ]
Nach 10 Millisekunden .... Das sind 100 Zahlen/Sekunde ... Die Anzeige lacht Dich nicht aus, sondern ist vor Bewunderung platt Vielleicht mal mit delay(1000) versuchen ... ?!?
wie soll ich das ganze erklären . man stelle sich eine zielscheibe vor und 2 person die daruaf schiessen . trifft person a soll es eben eins höher zählen ( ausgelöst durch taster hinter der zielscheibe . Ist person B dran . möchte ich button 2 drücken um auf anzeige 2 zu weckseln . damit er dort zählt . bei 9 schuss ist schluss.
lg
void loop () {
//when helper value is equal to 30 we increment counter by one
//thanks to this we our display not flicker
if(helper == 30){
counter+=1;
//setting up helper to 0 to start again
helper = 0;
}
//incrementing helper value
helper++;
//calculating the first (on the left) character for our display
show_number(1,counter/100%10, false);
delay(1);
//calculating the second character for our display
show_number(2, counter/10%10, false);
delay(1);
//calculating the first (ont the right) character for our display
show_number(3, counter%10, false);
delay(1);
}
Ich nehme meine Aussage von Post 5 zurück ... Die Durchläufe durch loop() müssen so schnell sein, weil die Ansteuerung der drei 7-Segmentanzeigen sequentiell über die gleichen Pins läuft und die Trägheit des Auges ausgenutzt wird, damit es nicht flackert. 7-Segment-Kino für zuhause, sozusagen.
P.S.: Der Pin 9 wird auf der o.a. Seite für den Dezimalpunkt verwendet.
Ich hätte eine ganz andere rangehensweise.
Erstmal ohne Anzeige und nur mit dem Seriellen Monitor das aufaddieren machen.
Bis das so läuft, wie Du Dir das vorstellst.
Dann die Anzeige - das ist nur eine zusätzliche Funktion.
Du verlierst Dich jetzt in einem Versuch einer Anzeige der Dir nicht hilft.
Dann mal hier erstmal einen Ansatz.
Du hast X Spieler, Die Auswahl des Spielers soll mit einem Taster erfolgen. Wäre hier jetzt ein Taster an PIN 2 nach GND.
Die Würfe sollen ebenfalsl aufaddiert werden - aber eben für den jeweiligen Werfer. Ist hier PIN 3 mit einem Taster nach GND.
Ich formatiere etwas anders - also nicht erschrecken.
Und ich habe im SerMon 115200 eingestellt - musst Du entsprechend ändern.
das geht nur das pin 2 und 3 schon bvelegt wäre hab nur noch a0-a5 frei aber du hast verstanden um was es geht ! perfekt 13 wäre noch frei ! aber der würde für ein restes vieleicht bleiben - denke das macht sinn