Probleem verschil Mega/Uno versus Nano Serial en Oled

Arduino specifieke Software
Berichten: 5
Geregistreerd: 02 Jul 2021, 15:00

Probleem verschil Mega/Uno versus Nano Serial en Oled

Berichtdoor Boment » 07 Jul 2021, 11:58

Beste mensen ik gebruik arduino voor mijn modelbaan trein hobby. mijn probleem is het volgende.
Via mijn PC eigengemaakte software (vb.com) stuur ik via een USB Arduino Mega aan , deze is via een bus aan diverse nano's gekoppeld welke verschillende functie hebben (wissels. seinen, plaatsbepalingen, enz) Ook heb ik bij stations OLED bordjes waar variable tijd, aankomst tijden en vertrektijden op komen.
Bij de Nano komt er een serial bericht binnen met deze code : S1B023:15;B1Aankomst;B2Altdorf;B309:53;B4Vertrek;B5Altdorf;T00945
Het verwerken van die code en presenteren op de Oled werkt alleen goed met een Mega cq Uno,
zie hieronder de Serial monitor hiervan, zoals je ziet het werkt perfect en is geschikt voor het Oled bordje :

Text 1 -> S1B023:15;B1Aankomst;B2Altdorf;B309:53;B4Vertrek;B5Altdorf;T00945

Text 2 -> S1B023:15;B1Aankomst;B2Altdorf;B309:53;B4Vertrek;B5Altdorf;T00945

Text 3 -> S1B023:15
Text 4 -> B1Aankomst
Text 5 -> B2Altdorf
Text 6 -> B309:53
Text 7 -> B4Vertrek
Text 8 -> B5Altdorf
Text 9 -> T00945

Als ik deze script upload naar Nano, dan krijg ik dit :
Text 1 -> S1B023:15;B1Aankomst;B2Altdorf;B309:53;B4Vertrek;B5Altdorf;T00945

Text 2 ->
Text 3 ->
Text 4 ->
Text 5 ->
Text 6 ->
Text 7 ->
Text 8 ->
Text 9 ->

Je ziet ik kom niet verder als het serial binnenkomende Text 1 inlezen.

Ik weet niet of het ligt aan het serial inlezen of het overzetten van String naar string veld :
WIE KAN ME VERDER HELPEN , hieronder het script, ik heb wat weggelaten betreffend het Oled gebeuren

Code: Alles selecteren
#include <SPI.h>
#include <Wire.h>
#include <EEPROM.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete
int Min = 0;
int Uur = 0;
unsigned long time_1 = 0;
String strBrd0 = "00:00";
String strBrd1 = "-----";
String strBrd2 = "-----";
String strBrd3 = "00:00";
String strBrd4 = "-----";
String strBrd5 = "-----";
String tmpSerIn = "";

// SSSSSSS
void setup() {
  Serial.begin(38400);
  //inputString.reserve(30) werkt bij NANO helemaal niet
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();

}
// LLLLLLLOOP
void loop() {
    if (millis() >= time_1){
  time_1 = millis() + 6000;
 
      }
   if (stringComplete) {
        if (inputString.startsWith("S1")) {
                 tmpSerIn = inputString;
                  Serial.print("Text 1 -> ");
                  Serial.println(inputString);
                  tmpSerIn = inputString;
                 GetCod(tmpSerIn);
                 inputString = "";
                  stringComplete = false; 
               //  WisselSet();
          }else{
           inputString = "";
            stringComplete = false;}
    }
}
//////////////END OF LOOP


//////////////////
void GetCod(String tmpA){
 
  Serial.print("Text 2 -> ");
  Serial.println(tmpA);



 
  // Serial input
  //S1B023:15;B1Aankomst;B2Altdorf;B309:53;B4Vertrek;B5Altdorf;T00945
  String InputOled;
  int tel = tmpA.indexOf(";");
      Serial.print("Text 3 -> ");
      Serial.println(tmpA.substring(0,tel));
      //SetBrd(tmpA.substring(0,tel));
      InputOled = (tmpA.substring(tel+1));
      tel = InputOled.indexOf(";");
      Serial.print("Text 4 -> ");
      Serial.println(InputOled.substring(0,tel));
      //SetBrd(InputOled.substring(0,tel));
      InputOled = (InputOled.substring(tel+1));
      tel = InputOled.indexOf(";");
      Serial.print("Text 5 -> ");
      Serial.println(InputOled.substring(0,tel));
      //SetBrd(InputOled.substring(0,tel));
      InputOled = (InputOled.substring(tel+1));
      tel = InputOled.indexOf(";");
      Serial.print("Text 6 -> ");
      Serial.println(InputOled.substring(0,tel));
      //SetBrd(InputOled.substring(0,tel));
      InputOled = (InputOled.substring(tel+1));
      tel = InputOled.indexOf(";");
      Serial.print("Text 7 -> ");
      Serial.println(InputOled.substring(0,tel));
      //SetBrd(InputOled.substring(0,tel));
      InputOled = (InputOled.substring(tel+1));
      tel = InputOled.indexOf(";");
      Serial.print("Text 8 -> ");
      Serial.println(InputOled.substring(0,tel));
      //SetBrd(InputOled.substring(0,tel));
     InputOled = (InputOled.substring(tel+1));
      tel = InputOled.indexOf(";");
      Serial.print("Text 9 -> ");
      Serial.println(InputOled.substring(0,tel));
     // SetBrd(InputOled.substring(0,tel));
 
}
////////////////////////
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
   
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}
/////////////////////////

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Probleem verschil Mega/Uno versus Nano Serial en Oled

Berichtdoor shooter » 07 Jul 2021, 14:03

even nagaan of je de goede libs gebruikt dus kijken waar je allemaal de libs hebt verstopt, als je een nieuwe install doet dan overschrijft arduino een aantal libs vanzelf.
paul deelen
shooter@home.nl

Berichten: 5
Geregistreerd: 02 Jul 2021, 15:00

Re: Probleem verschil Mega/Uno versus Nano Serial en Oled

Berichtdoor Boment » 07 Jul 2021, 21:16

shooter schreef:even nagaan of je de goede libs gebruikt dus kijken waar je allemaal de libs hebt verstopt, als je een nieuwe install doet dan overschrijft arduino een aantal libs vanzelf.


Bedankt voor je reactie maar ik begrijp je antwoord niet , bedoel je library met libs ??
Als je een sketch download naar een Nano. Uno wat dan ook, dan kies je aan welk board je gebruikt , dan wordt automatisch de bijbehorende 'libs' meegenomen.
In principe mag het niet uitmaken welk board je gebruikt , maar met mijn "probleem" maakt het waarschijnlijk toch uit.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Probleem verschil Mega/Uno versus Nano Serial en Oled

Berichtdoor ctunes » 07 Jul 2021, 21:34

Verlaag je baudrate eens en leg verder uit wat je met "bus" bedoelt.

I2C? Dan kan het aan de afsluitwewerstanden liggen.

Net als bij SCSI dienen alleen de eerste en de laatste deelnemer van de "bus" afsluitweerstanden te gebruiken.

Berichten: 5
Geregistreerd: 02 Jul 2021, 15:00

Re: Probleem verschil Mega/Uno versus Nano Serial en Oled

Berichtdoor Boment » 08 Jul 2021, 09:43

Om even alles kort te sluiten over mijn vraag , het verhaal wat ik erbij gedaan heb is zuiver informatie zoals de 'bus' dus heeft totaal niets te maken met mijn probleem.
Nogmaals mijn systeem werkt perfect momenteel 'hangen' er 9 Nano's aan voor besturen van magneet wissels en Servo's , daar naast gebruik ik IR sensors voor traject bepaling.
Mijn systeem werkt al een tijdje en mag zeggen , zelfs perfect, mij 'bus systeem' is eigen ontwerp en werkt op basis van vraag en bevestiging en op volgorde wat betreft traject en wissels en seinen.
Dus het heeft niets met mijn systeem te maken.

Het geval Oled borden , daar zend ik alleen informatie naar toe en uiteraard hoef ik geen terugmelding daarvan
Maar waar het hier om draait, dat er duidelijk verschil is in de werking van een Mega/uno versus Nano .
Het probleem doet zich al voor , kaal, dus de arduino editer met monitor
En uiteraard ik plaatst dit niet voor niets hier , ik heb van alles geprobeerd met baudrate, veranderen serial , in de plaats van String char var gebruiken.
Laad het script eens in een Mega/Uno zend de regel die ik bijgevoegd heb , doe het dan een met een Nano, dan begrijp je mijn vraag beter.

Het euvel wat ik heb kom vermoedelijk omdat ik Nano's in de prijsklasse van 0,95 tot 10 euro heb, deze werken zoals ik al in mijn verhaal vermeld heb perfect voor het doel wat ik al in gebruik heb, maar het schijnt als men wat langere seriële berichten zendt gaat het fout met de Nano. String waardes worden niet overgenomen. Ik denk dat ik maar voor de stations oled borden Uno's gaat gebruiken, jammer neem veel plaats in.
Het enige wat ik nog kan proberen is een echte Nano prof te kopen.
Bedankt voor jullie meedenken.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Probleem verschil Mega/Uno versus Nano Serial en Oled

Berichtdoor shooter » 08 Jul 2021, 12:16

jij doet include een aantal bestanden en dat zijn je extra libraries die opgehaald worden naast een aantal die standaard geladen worden.
het maakt dus uit waar de libraries staan en welke versie het is, want er hoeft maar 1 ding anders te zijn en het werkt niet meer, net zoals de beta versie gaat anders om met getallenen verder heb je ook nog old bootloader
maar kijk eerst of je de goede versie van elke lib ophaalt, en ja de compiler werkt anders bij de mega of de nano.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Google [Bot], uejilego en 19 gasten