Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

Arduino

Indította gaben, 2025 február 03, 18:09

Előző téma - Következő téma

frob

Még valami
ha string.toint funkciót használom ésnem intbe hanem byte -ba rakom az eredményt? természetesen szintén nem éri el a 255 értéket akkor működhet?

kösz!

Pali79

Nem nagyon vágom az arduinot, de az biztos (rendszertől függetlenül) hogy az eeprom írhatósága véges és nem is olyan sok mega2560 esetében 100.000 tehát csak akkor használd ha tényleg szükség van rá.

000000000

csak konvertálni akarsz string to byte?
Szerintem kodba ird le ide amit akarsz!
de ahogy irod van más probléma is tulcsordursz byte értékel?

000000000

itt egy régi projektem string alapon egy két funkcio...


#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11);

unsigned long elapsedTime;
unsigned long onTime;
int THRESHOLD=0;
const int Enter_Button =2;
const int POWER=12;
const int MONITOR_LED=13;
boolean state = true;
String readString;

void setup()
{
  Serial.begin(9600);
  BTSerial.begin(115200);
  onTime = millis();
  onTime = elapsedTime;
  pinMode(POWER, OUTPUT);
  pinMode(MONITOR_LED, OUTPUT);  
  pinMode(Enter_Button, INPUT_PULLUP);  
  digitalWrite(POWER, LOW);
  digitalWrite(MONITOR_LED, LOW);
   Serial.println("#####################");
  Serial.println("serial command");
  Serial.println("power on= P1");
  Serial.println("power off= P0");
  Serial.println("reset = RESET");
  Serial.println("#####################");
  Serial.flush();
 
}

void loop()
{

//BT-----------------------------------------------
if (BTSerial.available()){
  while (BTSerial.available()) {
    delay(3);
    char c = BTSerial.read();
    readString += c;
  }

  if (readString.length() >0) {
    BTSerial.println(readString);

    if(readString.indexOf("P1") >=0)
    {
      delay(3000);
      digitalWrite(POWER, HIGH);
     
       BTSerial.println("power on");
       BTSerial.flush();
      MONITOR();
    }

    if(readString.indexOf("P0") >=0)
    {
      delay(3000);
      digitalWrite(POWER, LOW);
       BTSerial.println("power off");
       BTSerial.flush();
      MONITOR();
    }
    if(readString.indexOf("RESET") >=0)
    {
      delay(100);
     
    BTSerial.println("RESET 3sec");

    delay(3000);

    MONITOR();

    asm volatile ("jmp 0");
     
    }

    readString="";
  }
}



//BT_END------------------------------------------


 
if (Serial.available()){
  while (Serial.available()) {
    delay(3);
    char c = Serial.read();
    readString += c;
  }

  if (readString.length() >0) {
    Serial.println(readString);

    if(readString.indexOf("P1") >=0)
    {
      delay(3000);
      digitalWrite(POWER, HIGH);
     
       Serial.println("power on");
       Serial.flush();
      MONITOR();
    }

    if(readString.indexOf("P0") >=0)
    {
      delay(3000);
      digitalWrite(POWER, LOW);
       Serial.println("power off");
       Serial.flush();
      MONITOR();
    }
    if(readString.indexOf("RESET") >=0)
    {
      delay(100);
     
    Serial.println("RESET 3sec");

MONITOR();

    delay(3000);

    asm volatile ("jmp 0");
     
    }

    readString="";
  }
}

 
   
  if (digitalRead(Enter_Button) == LOW)
       {

        THRESHOLD=1;
       
         onTime = millis();
       }
 
  if((millis() - onTime > 3000 ) && THRESHOLD==1)
 
 
       {    
         state=!state;
         
 digitalWrite(POWER, state);
 


MONITOR();

delay(3000);

THRESHOLD=0;

     
  if (digitalRead(POWER)==LOW)
       
      { delay(100);
     
       Serial.println("power off");
        }
        if (digitalRead(POWER)==HIGH)
       
 
       
      { delay(100);
     
       Serial.println("power on");
     
      }
     
      }
}
void MONITOR()
{
 
   digitalWrite(MONITOR_LED, HIGH);
   delay(100);
    digitalWrite(MONITOR_LED, LOW);
    delay(100);
     digitalWrite(MONITOR_LED, HIGH);
     delay(100);
      digitalWrite(MONITOR_LED, LOW);
  delay(100);

  //MONITOR();
  }

frob

szükség van rá, és csak a beállításokat mentem, tehát ha 100x felül lesz írva akkor sokat mondok... bővel elég a 100.000 írhatóság

frob


userCdata[i]=inStr.substring((i*3)+0,(i*3)+3).toInt();


ez a lényeg, tömbbe kerül egy string darabolva és formázva

de most mint int, közben azt megnéztem hogy ha byte-ra átírom a tömböt akkor is elfogadja...
de a programot futás közben még nem teszteltem

az volt a jelenség hogy ha az egyik értéket átírtam a 16 ból akkor bezazult a program, ezért gyanakszom hogy valami elmászik...

frob

vagy is csak darabolva, mert a nextion kijelzőtől úgy küldöm el az adatokat, hogy hármas számcsoportokba formázom, így tutira úgy jön el, de asszem most hogy ezt leírtam, azt is megnézem mit küld ki magából, nem e az szívat...

000000000

számot akarsz tárolni mért int használsz?
byte nem elég és még konvertálni sem kell mehet direktbe eeprom/ register csak helyet kell lefoglalni neki (direct modon)!?

000000000

Eeprom irásra vigyáz csak feltételes ugrásba használd!
de legjobb update funkcioval ez elenörzi ha uj érték van csak akor irja a registert csak![#szeret]

Meoman

Sziasztok! Ki szerettem volna próbálni ezt a megoldást, de semmire sem jutottam vele. Valaki tudna segíteni ez ügyben?!

morvfer7

Mit jelent az, hogy semmire nem jutottál vele?

Pali79

Érdekes dolgot produkál az én Mega2560+RAMPS 1.4 panelom. Grafikus kijelző van rajta amin valamiért alig látszik valami hiába állítom a kontrasztot, de amikor megnyomom a RAMPS reset gombját és amíg nyomva tartom addig jó a kijelzés. Aztán elengedem újraindul a mega és utána megint nem jó. Látott már valaki ilyet? Lehet ezzel valamit kezdeni?

Dakota25

Nem kényeztetsz el minket információval a problémád részleteiről.
Mit csináltál, meddig jutottál el benne?
Program a GitHub-ról letöltve-fordítva-feltöltve a Nanóba?
Mit csinál? Mit nem?

Meoman

Gondoltam letöltöm az ino-t, feldurrantom a NANO-ra, beállítom azt örülök. Erre csak a letöltésig jutottam. Mindenféle fordítási és egyéb hibával megáll.

morvfer7

Nálam simán lemegy a fordítás, tehát valamit rosszul csinálsz.
Mi a hibaüzenet?