RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO burger ARDUINO und Serial mit Maroon

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7430 private projects
  • 378 public projects
  • 16178470 lines compiled
  • 58188 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: ARDUINO und Serial mit Maroon

ARDUINO und Serial mit Maroon 8 Jahre 5 Monate her #3331

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
:help: Serial.write oder .print im Arduino Sketch funktioniert augenscheinlich noch nicht auf dem Nibo Burger:

Das Maroon Shield mit dem Arduino Sketch auf dem Nibo Burger wollte nicht- ausser "Hi" kam da nichts..
Das Arduino Wireless SD Shield und XBEE zum Testen auf den Burger gesteckt - das will auch nicht; im BrayTerm empfing ich für jedes vom Burger gesendete Zeichen 2 Nullbytes.

Also den Sketch ohne NIBOburger.xxxx auf ein Arduino Uno geladen.. Dort funktioniert der Sketch dann wie erwartet.

Sketch hochladen geht aber nur, wenn kein Shield gesteckt ist :ohmy: :angry:

Den Sketch für den Maroon Test geändert, und das Maroon Shield auf den Uno gesteckt..
wenn das Maroon Shield auf dem Uno steckt, bewirkt auch der Jumper auf dem Maroon Shield nix - zum Hochladen muss auch hier immer das Shield abgenommen werden..

Beim Fragezeichen Sample aus dem Wiki (www.nibo-roboter.de/wiki/Maroon_Shield/Protokoll) kann ich nur noch eine '0' erkennen..

..das Schachbrett Beispiel habe ich soweit abgeändert, um zu sehen, wie rum die Grafikbytes auf's Display kommen;
aber alle 100ms zu senden ist etwas zu kurz, die Anzeige kommt öfter aus dem Schritt.

Kann es sein, dass Serial auf dem Nibo Burger nicht funktioniert, weil dort kein Bootloader drauf ist?
//#include <NIBOburger.h>
 
 
unsigned long previousMillis = 0;
unsigned long interval = 5000;
unsigned char tick = 0;
 
void setup() {
//  NIBOburger.begin();
//  NIBOburger.checkVoltage();
 
//  initialize serial communication at 38400 bits per second:
    Serial.begin(38400);            // Maroon
//  Serial.begin(9600,SERIAL_8N1);  // XBEE @ BrayTerm
 
    delay(1000);
    delay(1000);
    delay(1000);
//    Fragezeichen Fade In / Fade Out
    Serial.write("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
//  Serial.print("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
 
}
 
void loop() {
//  interrupts();
//  char key = NIBOburger.getKeyChar();
 
//  switch (key) {
//    case 'A':
//      NIBOburger.setLed(LED1, ON);
////      Serial.write("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
////      Serial.print("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
//      break;
//      
//    case 'B':
//      NIBOburger.setLed(LED2, ON);
//      NIBOburger.setLed(LED3, ON);
//      break;
//      
//    case 'C':
//      NIBOburger.setLed(LED4, ON);
// //     Serial.write("hello\33t!");
// //     Serial.write("hello\n");
//      Serial.print("hello\n");
//     break;
//      
//    case 'a':
//      NIBOburger.setLed(LED1, OFF);
//      break;
//      
//    case 'b':
//      NIBOburger.setLed(LED2, OFF);
//      NIBOburger.setLed(LED3, OFF);
//      break;
//      
//    case 'c':    
//      NIBOburger.setLed(LED4, OFF);
//      break;
//  }
 
    unsigned long currentMillis = millis();
 
    if(currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
 
      interval = 100;     // Stress
 
//      XBEE Kommunikation Testen
//      Serial.println(tick++,DEC); 
 
//   Maroon Samples aus dem Wiki
 
//    Fragezeichen Fade In / Fade Out
//    Serial.write("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
//      Serial.print("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
 
//    Schachbrett Muster
      if(tick++ %2) {
//        Serial.write("\33l\33Gaa55aa55aa55aa55 ");
        Serial.write("\33l\33G0055aa55aa55aa00 ");
      }
      else {
        Serial.write("\33l\33G55aa55aa55aa55aa ");
      }
  }
 
 
    delay(1);        // delay in between reads for stability
}
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ARDUINO und Serial mit Maroon 8 Jahre 5 Monate her #3334

  • workwind
  • workwinds Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 573
Sketch aufspielen geht auch mit gestecktem maroon - vielleicht hast Du den Firmware-Update-Jumper noch auf dem maroon??

Probier mal folgendes:

Serial.begin(38400, 0x80 | SERIAL_8N1)
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ARDUINO und Serial mit Maroon 8 Jahre 5 Monate her #3341

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
workwind schrieb:
Sketch aufspielen geht auch mit gestecktem maroon - vielleicht hast Du den Firmware-Update-Jumper noch auf dem maroon??

Auf dem NIBO Burger kein Problem - aber auf dem Arduino Uno geht's nicht, weder mit dem Maroon noch mit dem Wireless Shield.
Probier mal folgendes:

Serial.begin(38400, 0x80 | SERIAL_8N1)

X2 Bit setzen und es geht :blink: Anfängern reicht das und insider nutzen originelleres

Nun das mit dem Fragezeichen auf dem Maroon Shield funktioniert noch immer nicht.. siehe auch Kommentare im Sketch
// \33d{n} - set matrix dimm value to n=[1-9: 10-90%, 0: 100%] und '*' = 0% ????

--> Neue Erkenntnis beim Schreiben: {0} == 0% und {*} == 100% -- im Wiki noch nicht richtig beschrieben..

Oder :unsure: könnte das an einer älteren Firmware liegen? Habe das Shield letzte Woche vom ELV bekommen..
 
// NBurger_TTxx_MAROON.ino
//
// Arduino Sketch testet Serial Kommunikation mit Maroon Shield
// Sample Strings aus dem Wiki
// http://www.nibo-roboter.de/wiki/Maroon_Shield/Protokoll
//
// Arduino IDE Einstellungen (im Menue Werkzeuge)
// Board      = NIBO Burger robot
// Programmer = NIBO Bee & Burger
//
 
#include <NIBOburger.h>

unsigned long previousMillis = 0;
unsigned long interval = 5000;
unsigned char tick = 0;
 
void setup() {
    NIBOburger.begin();
 
//  initialize serial communication at 38400 bits per second:
    Serial.begin(38400, 0x80|SERIAL_8N1);
 
//  Verzögerung für das "Hi" des Maroon Shields
    NIBOburger.setLed(LED2, ON);
    NIBOburger.setLed(LED3, ON);
    delay(1000);
    NIBOburger.setLed(LED1, ON);
    delay(1000);
    NIBOburger.setLed(LED4, ON);
    delay(1000);
 
    // setLeds nicht in den Arduino keywords?!
    NIBOburger.setLeds(OFF,OFF,OFF,OFF);
 
//  fade in question mark over 1 second, wait 1 second, fade out 1 second  
//  short: "\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*"
//  \33d{n} - set matrix dimm value to n=[1-9: 10-90%, 0: 100%] 
//                                              ?? und '*' = 0%
//  \33l    - load next matrix bytes without delay
//  ?       - das zu zeigende Zeichen
//  \33T{n}{xxx}[SPACE] - matrix dimm transition value and time
//  \33P{xxx}[SPACE] - Pause given time in miliseconds
 
//  Fragezeichen Fade In / Fade Out
//  Serial.write("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
//  Serial.print("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
 
//  hiermit ist schon etwas mehr zu erkennen ;-)
//  Serial.write("\33d*\33l?\33T0100 \33P1000 \33T*100 \33d0");
 
//  das ist auch nicht besser ??
    Serial.write("\33d*\33l?\33T0100 ");
    delay(100);
    Serial.write("\33P1000 \33T*100 ");
    delay(100);
 
//  Serial.write("\33d0"); // Dim keine Kraft
//  Serial.write("\33d*"); // Dim volle Kraft
    Serial.write("\33d5"); // Dim halbe Kraft
 
    // Wartezeit Startwert setzen
    previousMillis = millis();
 
}
 
void loop() {
  // Akku Check im laufenden Betrieb
  NIBOburger.checkVoltage();
 
  // aktuelle Uhrzeit merken
  unsigned long currentMillis = millis();
 
  // Taster Ereignisse abfragen..
  char key = NIBOburger.getKeyChar();
 
  // .. und auswerten
  switch (key) {
 
    case 'A':
      NIBOburger.setLed(LED1, ON);
//    Serial.write("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
      Serial.print("\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*");
 
      // dem Maroon etwas mehr Zeit geben
      interval = 5000;
     break;
 
    case 'B':
      NIBOburger.setLed(LED2, ON);
      NIBOburger.setLed(LED3, ON);
 
      Serial.write("\x10c"); // Reset Display
      interval = 3000;
      break;
 
    case 'C':
      NIBOburger.setLed(LED4, ON);
      Serial.write("hello\33t!");
 //     Serial.write("hello\n");
 //     Serial.print("hello\n");
     break;
 
    // "Taster losgelassen" Ereignisse
    case 'a':
      NIBOburger.setLed(LED1, OFF);
      break;
 
    case 'b':
      NIBOburger.setLed(LED2, OFF);
      NIBOburger.setLed(LED3, OFF);
      break;
 
    case 'c':    
      NIBOburger.setLed(LED4, OFF);
      break;
  } // switch(key)
 
//  unsigned long currentMillis = millis();
 
    // Wartezeit abgelaufen?
    if(currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
 
//  interval = 100;     // Stress
    interval = 150;     // geht noch
 
//    Schachbrett Muster
 
      if(tick++ %2) {
        NIBOburger.setLed(LED2, ON );
        NIBOburger.setLed(LED3, OFF);
//        Serial.write("\33l\33Gaa55aa55aa55aa55 ");
        Serial.write("\33l\33G0055aa55aa55aa00 ");
      }
      else {
        NIBOburger.setLed(LED2, OFF);
        NIBOburger.setLed(LED3, ON );
 
        Serial.write("\33l\33G55aa55aa55aa55aa ");
      }
 
  } // if(currentMillis..)
 
    delay(1);        // delay in between reads for stability
 
} // loop()
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ARDUINO und Serial mit Maroon 8 Jahre 5 Monate her #3344

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
BirgerT schrieb:
--> Neue Erkenntnis beim Schreiben: {0} == 0% und {*} == 100% -- im Wiki noch nicht richtig beschrieben..

Neue Erkenntnis beim nochmal Lesen..

<*> [ESC]b{n} - set matrix brightness to n=[0-9: 0-90%, *: 100%]
<*> [ESC]d{n} - dimm matrix brightness to n=[0-9: 0-90%, *: 100%]

aber

<*> [DLE]d{n} - set matrix dimm value to n=[1-9: 10-90%, 0: 100%]

..und was ist der Unterschied zwischen b und d?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ARDUINO und Serial mit Maroon 8 Jahre 5 Monate her #3345

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
:pinch: Dass das Maroon Shield auch drei Selbsttests enthält steht derzeit auch nur im Quellcode - was?

Habe mir mal die neue Firmware neu gebaut (V1.1) und geflasht - "\33P" versteht es aber noch immer nicht..

..ist es vielleicht sinnvoller
- wenn die beiden Maroon Taster als 'D' und 'E' liefern?
- die Spannungsanzeige über ein "\x10v" zu aktivieren?
- im EEPROM selbstdefinierte Bitmaps abzulegen, die mit einem Code abgerufen werden können.

gibt jetzt viel schönes zu tun.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ARDUINO und Serial mit Maroon 8 Jahre 5 Monate her #3346

  • workwind
  • workwinds Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 573
Hallo Birger!
  • D und E wäre sogar sehr sinnvoll! :blink:
  • ... das EEPROM ist (noch) ungenutzt... B)
  • Die Firmware ist auf Sourceforge im SVN ;-)

Die momentan (Anfang Nov. 2015) erhältlichen maroon SHIELDs sind alle mit der aktuellen Software geflashed...

-workwind-
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.119 Sekunden

Werbung