- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Vorstellung und gleich ein Problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2014
    Beiträge
    6

    Vorstellung und gleich ein Problem

    Anzeige

    Praxistest und DIY Projekte
    Hallo an alle
    mein Name ist Claus und ich habe als kleiner Junge mal RFT gelernt.
    Nun im gesetzten alter beschäftige ich mich wieder mit der Elektronik.
    Das Arduino System ist da für mich der ideale einstig.
    Nur habe ich ab und zu mal ein paar Probleme die ich nicht alleine lösen kann.
    Ich hoffe Ihr könnt mir dabei helfen.

    Ich habe mir ein Lauflicht von Adafruit ( LED Matrix 16X32 ) gekauft und habe es auch Problemlos
    Zum laufen bekommen.

    Nun versuche ich über die Serielle Schnittstelle Daten an das Display zu senden.
    Das Funktioniert auch, nur kann ich zwar mehr als 10 Zeichen senden, das Display zeigt immer
    nur max 10 Zeichen an .

    Bsp.

    Ich sende „ 123456789012345“
    Serial.print der eingehenden Zeichen zeigt alle Zeichen an.
    Nur die Variable „Text“ enthält nur 10 Zeichen "1234567890".
    Ich komme nicht dahinter warum das so ist.

    Ich hoffe jemand kann mir sagen was ich falsch mache.

    Danke


    // scrolltext demo for Adafruit RGBmatrixPanel library.
    // Demonstrates double-buffered animation on our 16x32 RGB LED matrix:
    // http://www.adafruit.com/products/420

    // Written by Limor Fried/Ladyada & Phil Burgess/PaintYourDragon
    // for Adafruit Industries.
    // BSD license, all text above must be included in any redistribution.

    #include <Adafruit_GFX.h> // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    // Similar to F(), but for PROGMEM string pointers rather than literals
    //#define F2(progmem_ptr) (const __FlashStringHelper *)progmem_ptr

    #define CLK 8 // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE 9
    #define A A0
    #define B A1
    #define C A2
    // Last parameter = 'true' enables double-buffering, for flicker-free,
    // buttery smooth animation. Note that NOTHING WILL SHOW ON THE DISPLAY
    // until the first call to swapBuffers(). This is normal.
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, true);
    // Double-buffered mode consumes nearly all the RAM available on the
    // Arduino Uno -- only a handful of free bytes remain. Even the


    String Text; // a string to hold incoming data
    boolean stringComplete = false; // whether the string is complete
    int textMin;
    int l = 0;
    int textX = matrix.width();

    void setup()
    {
    Serial.begin(9600);
    Text.reserve(200);
    matrix.begin();
    matrix.setTextWrap(false); // Allow text to run off right edge
    matrix.setTextSize(1);
    }

    void loop() {

    if (stringComplete)
    {
    Serial.println(Text);
    Serial.println(l);
    textMin = l * -8,
    stringComplete = false;
    }

    matrix.fillScreen(0);
    matrix.setTextColor(matrix.Color333(0, 0, 1));
    matrix.fillRect(0, 14, 32, 2, matrix.Color333(1, 0, 0));
    matrix.fillRect(0, 0, 32, 2, matrix.Color333(1, 0, 0));

    if (l >= 7)
    {
    if((--textX) < textMin) textX = matrix.width();
    delay(30);
    matrix.setCursor(textX, 4);
    matrix.print(Text);
    }
    else
    {
    matrix.setCursor(1, 4);
    matrix.print(Text);
    }

    matrix.swapBuffers(false);

    }

    void serialEvent()
    {
    Text = "";
    l = 0 ;
    while (Serial.available())
    {
    char inChar = (char)Serial.read();
    Text += inChar;
    delay(3);
    Serial.print(inChar);
    Serial.println();
    l ++;
    if (inChar == '\n')
    {
    stringComplete = true;
    }
    }
    }

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Das sieht merkwürdig aus:
    Code:
    if (stringComplete)
    {
       Serial.println(Text);
       Serial.println(l);
       textMin = l * -8,
       stringComplete = false;
    }
    Wenn du Hilfe möchtest, wäre eine Code-Formatierung hilfreich. So ist das schwer zu lesen.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2014
    Beiträge
    6
    Die Formatierung ist beim einfügen verloren gegangen.
    textMin bestimmt die Anzahl der Zeichen für das durchlaufen der Schrift von links nach rechts.
    l ist die Anzahl der Zeichen und die -8 sind die Leerzeichen hinter dem Text bis zum nächsten durchlauf des Textes.

    Wie kann ich Code einfügen ohne das die Formatierung verloren geht ?

    Mein Problem betrifft eigentlich nur den letzten teil in dem die Zeichen eingelesen werden
    Der "Text" String nimmt einfach nur 10 Zeichen auf.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Wenn du hier posten willst, erscheinen unten rechts drei Buttons: Antworten, Erweitert, Abbrechen. Auf Erweitert klicken. Dann kannst du das Raute-Symbol anklicken. Alternativ kannst du auch deinen Programmcode mit [CODE]...[/CODE] umschließen. Weiteres auch hier.

    Drei Ideen/Ansätze zu deinem Problem:
    1. while (Serial.available() > 0) , da -1 zurückgegeben wird, falls keine Daten vorhanden sind.
    2. Du funkst mit Serial.print(inChar); Serial.println(); über die selbe Leitung, wärend du liest.
    3. Hast du mal versucht die Bautzahl zu erhöhen?

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2014
    Beiträge
    6
    Danke für die Tips.
    Leider alle ohne Erfolg.
    Auch ohne Serial.print Anweisungen keine änderung

    Auszug aus dem Monitor
    123456789123456 // Eingabe über die Serialle
    1234567891 // Inhalter der Variable "Text"
    16 // Inhalt der Varibale l anzahl der zeichen

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo , ich würde mal hier nach Beispielen suchen die gehen, um diese zu modifizieren für eigene Creationen. Schau Dir genau noch mal die zitierte Stelle von Sisor an. Mich wundert das der Compiler da mitgemacht hat.. na ja kann sein das er nicht meckert aber komisch...kann sein das der Code nicht feststellt das die Stringlänge ja : Stringlänge =Textlänge +1 ist. Das waren bei mir so die Anfängerfehler damals oder auch Flüchtigkeitsfehler beim Programmieren... schäm..

    Code kannst Du einfügen, in dem Du Zitat anclickst und dann QUOTE in CODE umschreibst ... so mache ich es immer..

    Gerhard

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2014
    Beiträge
    6
    Mein Code basiert auf dem Beispiel aus deinem Link.
    Da ist auch diese zeile mit drinn


    textMin = sizeof(str) * -12,

    und das beispiel Funktioniert ja auch.

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    mit dem Kommata am Ende ???

    da stehts in einer int deklaration :

    Code:
    int    textX   = matrix.width(),
           textMin = sizeof(str) * -12,
           hue     = 0;
    und nicht mitten im Code , wo man mit einem " ;" abschliessen sollte...
    Geändert von oderlachs (21.03.2014 um 11:51 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Das hier geht bei mir:
    Code:
    String inText = "";
    int l = 0;
    void setup()
    {
      Serial.begin(9600);
    }
    
    void loop() 
    {
      if (inText !="")
      {
        Serial.print("Text:   ");
        Serial.println(inText);
        Serial.print("Laenge: ");
        Serial.println(l);
        inText = "";
      }
    }
    
    void serialEvent()
    {
      l = 0;
      while (Serial.available() > 0)
      {
        char inChar = Serial.read();
        inText += inChar;
        delay(3);
        l++;
      }
    }
    Eingabe:
    12345678901234567890

    Ausgabe:
    Text: 12345678901234567890
    Laenge: 20

    verwendet: Uno + Arduino IDE Serieller Monitor

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    Bestens ...klappt bei mir auch, allerdings erst ab Arduino Version >= 1.0 auch Ardu-Uno usw...
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Wieder ein Neuer: Vorstellung und Fragen
    Von danimath im Forum Robby RP6
    Antworten: 17
    Letzter Beitrag: 12.08.2011, 13:00
  2. vorstellung und frage
    Von diablo_rw im Forum Sensoren / Sensorik
    Antworten: 11
    Letzter Beitrag: 03.02.2010, 09:33
  3. Antworten: 11
    Letzter Beitrag: 07.09.2008, 17:56
  4. Antworten: 3
    Letzter Beitrag: 17.08.2008, 18:38
  5. Asuro - Gleich ein paar Fragen
    Von Shadow² im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 18.02.2006, 09:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus