INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Array mit Zähler steuern
11.11.2015, 17:18
Beitrag #1
Array mit Zähler steuern
Hallo Zusammen,

ich versuche mich gerade in das Thema Arrays einzuarbeiten und habe dazu eine kleine Frage:

Also ich habe mit einem Array 4 Leds definiert:
Code:
int LedsButtons[] = {50,51,52,53};

und außerdem noch einen Zähler:
Code:
int y = 0;
im Loop lasse ich den Zähler hochlaufen und sage dem Arduino er soll die Led die y entspricht einschalten. Also:
Code:
for (y = 0; y < 4; y++) {
und
Code:
digitalWrite(LedsButtons[y], HIGH);

gibt es da auch einen Befehl mit dem ich sagen kann was mit allen anderen Leds die nicht y entsprechen passieren soll?

Also quasi sowas wie "digitalWrite(LedsButtons[!=y],LOW)" oder irgendetwas in die Richtung?

schonmal herzlichen Dank für die Hilfe!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.11.2015, 19:09
Beitrag #2
RE: Array mit Zähler steuern
(11.11.2015 17:18)ferdi schrieb:  Hallo Zusammen,

ich versuche mich gerade in das Thema Arrays einzuarbeiten und habe dazu eine kleine Frage:

Also ich habe mit einem Array 4 Leds definiert:
Code:
int LedsButtons[] = {50,51,52,53};

und außerdem noch einen Zähler:
Code:
int y = 0;
im Loop lasse ich den Zähler hochlaufen und sage dem Arduino er soll die Led die y entspricht einschalten. Also:
Code:
for (y = 0; y < 4; y++) {
und
Code:
digitalWrite(LedsButtons[y], HIGH);

gibt es da auch einen Befehl mit dem ich sagen kann was mit allen anderen Leds die nicht y entsprechen passieren soll?

Also quasi sowas wie "digitalWrite(LedsButtons[!=y],LOW)" oder irgendetwas in die Richtung?

schonmal herzlichen Dank für die Hilfe!!

vielleicht sowas?
int LedsButtons[] = {50,51,52,53};
int y = 0;
for (int i=0; i < sizeof(LedsButtons)/sizeof(int); i++)
digitalWrite (LedsButtons[i], i == y ? HIGH : LOW);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 13:02
Beitrag #3
RE: Array mit Zähler steuern
Habs grade ausprobiert und funktioniert leider nicht. Wenn Ichs so mache geht nur noch die LED an PIN 50.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 13:10
Beitrag #4
RE: Array mit Zähler steuern
(12.11.2015 13:02)ferdi schrieb:  Habs grade ausprobiert und funktioniert leider nicht. Wenn Ichs so mache geht nur noch die LED an PIN 50.

ja klar, so war das ja auch gedacht.
in y=0 steht ja, dass du nur du das led 50 mit y=0 anmachst.
wenn du ein anderes led anmachen willst musst du y auf 0,1,2,3 setzen.
das richtige y muss schon irgendwie gesetzt werden.
woher du diesen wert y bekommst weiss ich nicht, hängt doch von deinem projekt ab.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 16:25
Beitrag #5
RE: Array mit Zähler steuern
(11.11.2015 17:18)ferdi schrieb:  
Code:
int LedsButtons[] = {50,51,52,53};
int y = 0;
  for (y = 0; y < 4; y++) {
     digitalWrite(LedsButtons[y], HIGH);
gibt es da auch einen Befehl mit dem ich sagen kann was mit allen anderen Leds die nicht y entsprechen passieren soll?
Also einen eigenen Befehl gibt es dafür nicht, aber man kann sich ja ganz einfach eigene Befehle machen. Das nennt sich dann "Funktion":
Code:
int LedsButtons[] = {50,51,52,53};

void switchOnOnlyOne(int i) {
  for(int j = 0; j < 4; j++)
      digitalWrite(LedsButtons[j], j == i);
}

void loop() {
  for (int y = 0; y < 4; y++) {
      switchOnOnlyOne(y);
      delay(1000);
  }
}
Disclaimer 1: Das delay ist nur zur Demonstration.
Disclaimer 2: Ja, setup() fehlt...
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 17:26
Beitrag #6
RE: Array mit Zähler steuern
Erstmal danke für die Antworten. Ich werd eure Vorschläge sobald ich die Zeit finde ausprobieren(kann bißchen dauern).
Was ich bei dem Code von dir Thorsten beim ersten drüber lesen nicht ganz verstehe ist die Zeile:
digitalWrite(LedsButtons[j], j==i);

woher weis denn die Led jetzt was sie machen soll? normalerweise schreibe ich ja HIGH oder LOW in den digitalWrite-Befehl.

Und gleich noch eine 2te Frage nebenbei:
Wie kann ich in der fortschleife einen zweiten Zähler mitlaufen lassen (also beispielsweise z), der zwar gleichviel Schritte wie y hat aber nicht von 0 bis 3 zählt sondern von 40 bis 43?
kann ich sagen:
Code:
for ((y = 0; y < 4; y++) && (z = 40; z < 44; z++)) {


oder schreibe ich einfach in die for-schleife einen Befehl? Z.B.
Code:
for (y = 0; y < 4; y++) {
       z = y+40;

oder muss ich eine zusätzliche for-schleife einfügen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 17:45
Beitrag #7
RE: Array mit Zähler steuern
Der zweite Ansatz ist richtig.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 19:48 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2015 19:52 von Klaus(i).)
Beitrag #8
RE: Array mit Zähler steuern
Hi ferdi,

das was Du scheinbar möchtest kannst Du eventuell auch mit Port Registern lösen.
https://www.arduino.cc/en/Reference/PortManipulation
Werf mal einen Blick.

Beim Mega sind PIN 50 bis 53 PIN 0 bis 3 des Port B
   

PHP-Code:
int value;
int y;

void setup() {
  
DDRB DDRB B00001111;  // PIN 0 bis 3 von Port B = Output
}

void loop() {
  for (
04y++) {
     
PORTB ;       //alle PINS von Port B auf 0 setzen = alle LEDs AUS
     
value = (int)pow(2,(float)y);   // 2 hoch 0, 2 hoch 1, .... 
     
PORTB value;    //LED entsprechend y AN 
     
delay(1000);     //nur zu Demozwecken
  
}    

Ohne Gewähr.

Gruß, Klaus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 6 483 31.07.2017 08:17
Letzter Beitrag: Schrittmotor
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.353 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  2 Servos ohne delay steuern Ratlos 27 1.572 26.07.2017 20:43
Letzter Beitrag: MicroBahner
  Roboter kompassgestützt steuern Snörb 5 598 22.07.2017 12:16
Letzter Beitrag: Snörb
  pinMode mit array luj1990 6 467 22.07.2017 10:24
Letzter Beitrag: Binary1
  Neo Pixel Clone mit 7 2812B Steuern Lil-De 8 395 12.06.2017 22:02
Letzter Beitrag: Lil-De
  Array-Index zu groß: Tückisches Verhalten GuaAck 6 313 05.05.2017 22:03
Letzter Beitrag: Tommy56
  Array mit Serial.read befüllen Gonmaus 4 420 01.05.2017 09:13
Letzter Beitrag: Gonmaus
  Array länge oOSpikeOo 4 275 28.03.2017 18:57
Letzter Beitrag: oOSpikeOo
  RGB Animation über Serial Steuern Medolino 5 422 20.02.2017 16:14
Letzter Beitrag: Medolino

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste