Go Down

Topic: Anfänger: hab was übersehen bei Serial.available (Read 1 time) previous topic - next topic

summ

Feb 23, 2013, 03:33 pm Last Edit: Feb 24, 2013, 09:19 pm by uwefed Reason: 1
Hallo zusammen,
als mega-blutiger Anfänger war heilfroh, als ich endlich raus hatte, wie ich Led-Pins in einem Array zusammenfassen kann. Ich taste mich in meinem Sketch Schritt für Schritt vorwärts. Jetzt wollte ich mal schauen, wie ich bestimmte Aktionen per Tastatur-Eingabe im Serial Monitor steuern kann. Aber es gibt immer den Fehler
error: expected unqualified-id before 'if'

zur Info: ich versuche eine wahnsinnig simple (im Vergleich zu Massenled-Matrix-TLC-sonstwas Schaltungen) zu erreichen und später verschiedene Programmabläufe per Bluetooth (daher der Versuch mit simplen Zahlen oder Buchstaben) zu steuern.
Heute mittag hätte ich fast alle meine Arduino-Sachen, die ich mir dafür zugelegt habe, hier im Forum zum verkauf angeboten, da ich zwischen Arbeit, Familie und Hobby (Modellbau, und dafür soll die Arduino-Anwendung sein) einfach nicht genug Zeit habe, die Programmiersprache komplett zu erlernen.
ich hoffe, es kann mir jemand helfen. Ich habe ausgiebig versucht, mit den Hilfedateien, den Beispielen und viel Lesen im Netz vorwärts zu kommen. Aber viele der Erklärungen sind auf Englisch (normal hab ich damit kein Problem, aber hier muss ich es technisch verstehen) oder sind für wesentlich komplexere Abläufe und nicht für sowas einfaches.

Hier noch der Code dazu:

Code: [Select]
//import TLC libraries
#include "Tlc5940.h"
#include "tlc_fades.h"
int ledPins[] = {0,1,2};
int pinCount = 4;
int max = 100;

void setup()
{
 // start communication with TLC chip
 Tlc.init();
 Serial.begin(9600);
}

TLC_CHANNEL_TYPE channel;


void loop(){
 
 Tlc.clear();
}

if (Serial.available() > 0) {
    int input1 = Serial.read();
    switch (input1) {
    case 'a':    
      Serial.println("a");
      Tlc.set(4,4000);
      Tlc.update();
      break;
    case 'b':    
      Serial.println("b");
      Tlc.set(4,500);
      Tlc.update();
      break;

      }
 for (int thisPin = 0; thisPin < pinCount; thisPin++) {
 Tlc.set (ledPins[thisPin], max);
 uint16_t duration = 150;
 uint32_t startMillis = millis()+ 2000;
 uint32_t endMillis = startMillis + duration;
 tlc_addFade(ledPins[thisPin], 4095, max, startMillis, endMillis);
 tlc_updateFades();
 Tlc.update();

}
}

[EDIT] CODE Tags hinzugefügt Grüße Uwe[/EDIT]

Eisebaer

hi,

in der void setup wird alles reingeschrieben, was beim start einmal ausgeführt werden muß, die void loop wird dann immer wieder durchlaufen.
deshalb macht es keinen sinn, etwas außerhalb dieser funktionen oder anderer funktionen, die von der setup oder loop aufgerufen werden, reinzuschreiben.

schreib das, was nach der loop drinsteht, in eine eigene  funtion und ruf diese aus der loop  auf.

gruß stefan

summ

#2
Feb 23, 2013, 04:36 pm Last Edit: Feb 24, 2013, 09:18 pm by uwefed Reason: 1
meintest Du sowas? Jetzt klappt es mit der Tastatureingabe. Aber in case 'c' tut sich nichts, ausser das die Leds statisch leuchten.


Code: [Select]
//import TLC libraries
#include "Tlc5940.h"
#include "tlc_fades.h"
int ledPins[] = {0,1,2};
int pinCount = 4;
int max = 100;

void setup()
{
 // start communication with TLC chip
 Tlc.init();
 Serial.begin(9600);
}

TLC_CHANNEL_TYPE channel;


void loop(){
 
 Tlc.clear();
 
if (Serial.available() > 0) {
    int input1 = Serial.read();
    switch (input1) {
    case 'a':    
      Serial.println("a");
      Tlc.set(3,4000);
      Tlc.update();
      break;
    case 'b':    
      Serial.println("b");
      Tlc.set(3,500);
      Tlc.update();
      break;
    case 'c':  
     ledBlink();
     Serial.println("arsch");    
   
     break;
    }
 }
delay(1);
}

void ledBlink(void){
 //Tlc.clear();
   
     for (int thisPin = 0; thisPin < pinCount; thisPin++) {
     Tlc.set (ledPins[thisPin], max);
     uint16_t duration = 150;
     uint32_t startMillis = millis()+ 2000;
     uint32_t endMillis = startMillis + duration;

     tlc_addFade(ledPins[thisPin], 4095, max, startMillis, endMillis);
     tlc_updateFades();
     Tlc.update();
}
}


[EDIT] CODE Tags hinzugefügt Grüße Uwe[/EDIT]

Doc_Arduino

Hallo,

leg mal Deine LEDs nicht auf D0 / D1, das ist die serielle Schnittstelle.

Tschau
Doc Arduino

summ

#4
Feb 23, 2013, 11:16 pm Last Edit: Feb 23, 2013, 11:46 pm by summ Reason: 1
Ich hab mal entsprechend ledPins[] = {2,3,4} ind pinCount = 3 koorigiert.
Aber dennoch: sobald ich im Terminal c eingebe, leuchten pins 2,3,4 dauerthaft. Ich hab keine Idee, woran es liegt, dass er die fades nicht ausführt und nix mehr macht.
Übrigens: sobald ich 'c' mehrfach hintereinander im Terminal eingeben, so änderns sich die Helligkeitswerde des Led-Arrays. Mir scheint, als springe ich damit an irgend eine "zeitliche" Stelle in dem void ledBlink und dieser void scheint irgendwie stehen zu bleiben.
Weiß ja nicht mal, ob ich was richtiges vermute, geschweige denn, wie ich es lösen kann.

Go Up