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
  Ein als "const" deklariertes Array übergeben Retian 5 126 08.11.2016 18:39
Letzter Beitrag: Tommy56
  Zähler Uwe1475 14 1.423 03.09.2016 20:45
Letzter Beitrag: Uwe1475
  Arduino Steuern über eigne Homepage b3ta 8 400 16.08.2016 11:07
Letzter Beitrag: Pit
  PWM-Lüfter mit Adafruit Motor-Shield steuern? phischmi 9 448 22.07.2016 18:06
Letzter Beitrag: phischmi
  "Nichtlineare" Zähler Turbo-S 13 665 20.07.2016 19:38
Letzter Beitrag: Turbo-S
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 751 16.07.2016 11:43
Letzter Beitrag: Binatone
  String-Array füllen? torsten_156 9 444 08.07.2016 20:07
Letzter Beitrag: amithlon
  Messwerte in Array speichern ArduinoMega2560 2 416 07.06.2016 16:30
Letzter Beitrag: SkobyMobil
  DC Motor in beide Richtungen steuern WIMunios 5 644 24.03.2016 12:04
Letzter Beitrag: Bitklopfer
  Mit RFID Sensor NFC Tags steuern WIMunios 14 920 15.03.2016 12:07
Letzter Beitrag: WIMunios

Gehe zu:


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