Arduino programozás segítség

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése

   uint8_t inNum = 0;
  // Read serial input:
  while (Serial.available() > 0) {
    int inChar = Serial.read();
    if (isDigit(inChar)) {
      // convert the incoming byte to a char and add it to the string:
      inString += (char)inChar;
    }
    // if you get a newline, print the string, then the string's value:
    if (inChar == '\n') {
      Serial.print("Value:");
      inNum = inString.toInt();	//<<< Itt a kapott szám
      Serial.println(inNum);
      Serial.print("String: ");
      Serial.println(inString);
      // clear the string for new input:
      inString = "";
    }
  }
Attila79
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2020. október 19. hétfő, 19:16

Re: Arduino programozás segítség

Hozzászólás Szerző: Attila79 »

Köszönöm a választ :) Még ma megnézem mi is ez.
Tegnap még találtam a youtube-on a Serial.read() helyett, egy olyat, hogy Serial.parseInt() ami elvileg értéket olvas ki, és valóban :D
brs
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2020. november 24. kedd, 17:14

Re: Arduino programozás segítség

Hozzászólás Szerző: brs »

Sziasztok!
Arduino programozásában kérem a segítségetek! (PIC assemblerben vagyok járatos, ez a környezet nagyon idegen nekem..) Egy GY-BMP280 sensort szerettem volna kipróbálni, hogy egyáltalán jó -e? A probléma: letöltöttem a Adafruit bmp280test vázlatot (cimet beirom 0x77), megnyitom a soros kommunikációt:semmi. lefordítom az i2cdetect vázlatot>soros porton látszik az eszköz címe (0x77), rendben. újból lefordítom a bmp280test vázlatos>soros porton most pedig fut?! (az igaz hogy nincs rendben, mert a kiirt adatok nem változnak!!!) mi lehet az oka? nem értem az egészet... ezt többször is kipróbáltam , és ez a helyzet. Az Arduino IDE 1.8.13, most telepítettem újra, Windows7, Arduino Leonardo, IIC buszos megoldás a youtube-rol..
üdv, reménykedem a segítségetekben :)...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

Arduino keretrendszerből régebbit tegyél fel. Pl. 1.6.4, 1.6.6 vagy 1.6.8 vagy 1.8.6 (1.8.13 bugos ill a régebbi librarykkal nem megy együtt!)

A BME szenzor igaz nem 3.3v-os, hanem 5V-os?

Kábel kontakthiba?
http://www.tavir.hu - a gazda :)
brs
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2020. november 24. kedd, 17:14

Re: Arduino programozás segítség

Hozzászólás Szerző: brs »

Nem is gondoltam hogy kapok reakciót, köszönöm :) !!
BMP-280 a sensor, szintillesztővel. két szenzort vettem. PIC assemblerben teszteltem, SPI buszon, (PICKIT3 debugger) be tudom olvasni a adatokat (az ID 0x58-nak olvasom, így feltételezem hogy a többi adat is rendben van) a kompenzáció során viszont 26,8C körüli értékeket olvasok.(!!??) pedig ez egy nagyon pontos sensor lenne... Azt akartam ellenőrizni, hogy jók e egyáltalán a sensorok, ezért váltottam át az arduino-ra. eddig ez egy nagy csalódás számomra.. a válaszod is elkeserít, hogy ez így működik, sokkal kiforrotabnak gondoltam az egészet. Jó ötletnek tünt, hogy a mások által kipróbált programot használjak, hogy kizárjam a saját tévedésem... ( bár hiányosak az ismereteim ebben a témában) Olyan mintha ezt még most fejlesztené valaki a világ másik végén :) Nagyon sok videót megnéztem, sok weboldalt átbogarásztam.. Azt gondoltam, hogy a legújabb verzió a legjobb :) ki fogom próbálni javaslatodat (bár egy keretprogramnak illet volna erre figyelmeztetni...)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

A bekötést nézd meg, mert a 3.3V-os verzió SPI és I2C módban is mehet. Szintllesztés FET-es legyen, ellenállásosztós nem jó (I2C odavissza megy).
A címkiválasztás OK.
A keretrendszerben a libraryk keletkezési ideje és a keretrendszeré közel azonos legyen. A szoftverupgrade nem monden esetben zökkenőmentes! Én kb 1 éves elmaradásban szoktam lenni - addigra a bugok ismertté válnak. ne én legyek a BétaTeszter.
Amúgy kiforrott, sokmindent tud. De a legújabb verziókkal más esetekben is csak a gond van...

Stabil library:
- adafruit
- sparkfun

Ezek 99.9%-ban teljesen jók, nem igazán futottam hibára velük. Az Adafruit oldalán levő leírásokat, mintákat veszem alapul - korrektek nagyon.
http://www.tavir.hu - a gazda :)
majlac
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2020. november 30. hétfő, 11:22

Re: Arduino programozás segítség

Hozzászólás Szerző: majlac »

Sziasztok!
Ki tudna segiteni arduino Atmega328-cal megévő forráskód fordításában ELF állománnyá?
Egy neten megjelent Spectrum Analizátorhoz. Link: http://vwlowen.co.uk/arduino/spectrum-a ... alyser.htm
A panelt már megépítettem. A Beégetéssel azt hiszem boldogulni fogok.
Atmel Studio 6-tal próbátam lefordítani.
Tisztelettel: majlac
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

Nem AVR-Studio kell neki, hanem Arduino 1.0.5 (a kép szerint) : ~8 éves szoftver!
+ a Cypress modul library
+ Adafruit Nokia 5110

Égetés meg a lefordított HEX + fusebiteket...

Ötlet innen:
http://vwlowen.co.uk/arduino/spectrum-a ... /page2.htm

Tipp: ha már WiFi-t kell nézni:
ESP8266 modul, és abban minden benne van. és ehhez OLED kijelző:
Pl:
https://www.instructables.com/ESP8266-WiFi-Analyzer/
http://www.tavir.hu - a gazda :)
sirbedevir
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2017. május 26. péntek, 12:02

Re: Arduino programozás segítség

Hozzászólás Szerző: sirbedevir »

Sziasztok!
Kicsit elakadtam, légyszi segítsetek:
Egy olyan fémkereső alkalmazást építek, ahol a setup végén egy while(1); -ben végtelen ciklus fut, innen emeli ki az analog komparátor megszakítás a programvezérlést az analog komparátor megszakítás függvényében, ahonnan némi tevékenykedést követően a vezérlés visszajut a while(1) végtelen ciklusba, ahol várakozik a következő analog komparátor megszakításra. (Az alkalmazás lényege, hogy fáziszaj nélkül, mindig ugyanakkora késleltetéssel induljon az analog komparátor függvény, amiben nagyon pontos időzítés zajlik, ezért várakozik while(1)-ben.)
Gyönyörűen működik is az alkalmazás. Viszont most szeretnék egy MCP4728-as i2c -s DAC ot is vezérelni. Arra hamar rájöttem, hogy az analog komparátor megszakítás függvényéből nem lehet soros kommunikációt folytatni... Láttok erre ebben struktúrában lehetőséget? Köszi!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

Ha az I2Cvel operálsz, akkor az analóg komparátor elmászik. Mindkettő megszakítást használ, ugyanakkor a megszakítások prioritás alapján sorbaállnak.. És ha a futó alatt beesik másik - akkor megjegyzésre kerül és a előző lefutása után fut le.Megszakítás _nem_ megszakítható.

B terv: szoftveres I2C - az nem foglal INT-et. DE mi van ha az i2Cben elmászol, mert az INT épp azt szakította meg?
http://www.tavir.hu - a gazda :)
sirbedevir
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2017. május 26. péntek, 12:02

Re: Arduino programozás segítség

Hozzászólás Szerző: sirbedevir »

Köszi!
Elvileg nem akadnának össze, mert az analog komparator megszakítás 80000usec ként következik be, az mcp4728-nak az egy ciklusban egyszeri időzitett adatküldés csak 1000usec hosszú, azaz a komparátor isr-jében bőven elfér. Így esetleg megoldható? Most ahogy kiadom az isr-ben a DAC-ra írás utasítását, azonnal lefagy. Esetleg a wire.h -t kozmetikázva lehetséges lenne hogy ne fagyjon le?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

A while(1) helyére tedd be az I2C-s rutint:
https://playground.arduino.cc/Main/SoftwareI2CLibrary/

Az I2C-vel lekérdezed a külső ADC értékét... de mit kezdesz vele? Az nem derül ki...
A DAC-ra kiírás meg milyen értéket küld ki? Számolsz? egyéb?

A leírásod alapján egy probléma kb 5...10%-a került kifejtésre. Lehet programszervezéssel, HW módosítással a bűvészkedés elkerülhető lenne... Csak ismerni kéne a teljes hátteret....
http://www.tavir.hu - a gazda :)
sirbedevir
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2017. május 26. péntek, 12:02

Re: Arduino programozás segítség

Hozzászólás Szerző: sirbedevir »

Köszi a segítséget! Arra jutottam, hogy csatasorba állítok egy második kontrolert, amelyikkel a méréseket és a DAC állítást kényelmesen elvégzem. Persze elegánsabb lett volna ha az adó és a vevő áramkört egy kontrolerrel sikerül vezérelni, de az adóáramkör analog komparátoros működése túlságosan behatárolja a további lehetőségeket.
enorbi93
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2015. szeptember 22. kedd, 19:41

Re: Arduino programozás segítség

Hozzászólás Szerző: enorbi93 »

Sziasztok!
Szeretnék segítséget kérni, még kezdő vagy.
Azt szeretném, ha az egy,kettő....raketa HIGH, akkor a mostani==1;2;3;4;5;6;7, majd ha nem HIGH, akkor az elozo == mostanival. Tehát az előző mindig kövesse a mostanit egy lemaradással. Sajnos ez nem valósúl meg, mert a kettő érték mindig egyenlő.
Köszönöm szépen előre is a segítséget :)

Kód: Egész kijelölése

//ledeket nem másoltam be
const int s1 = 0;
const int s2 = 1;
const int s3 = 2;
const int s4 = 3;
const int s5 = 4;
const int s6 = 5;
const int r1 = 6;

const int fel = 7;
const int le = 8;

const int led1 = 9;
const int led2 = 10;
const int led3 = 11;
const int led4 = 12;
const int led5 = 13;
const int led6 = A0;
const int ledr = A1;
const int ledfel = A2;
const int ledle= A3;

int elozo  = 0;
int mostani =0;
int difi = 0;

int egy = 0;
int ketto = 0;
int harom = 0;
int negy = 0;
int ot = 0;
int hat = 0;
int raketa = 0;
int vido = 100;
int natural = 1000;



void setup() {

  Serial. begin(9600);
  
  pinMode(fel, OUTPUT);
  pinMode(le, OUTPUT);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(ledr, OUTPUT);
  pinMode(ledfel, OUTPUT);
  pinMode(ledle, OUTPUT);
  
  pinMode(s1, INPUT);
  pinMode(s2, INPUT);
  pinMode(s3, INPUT);
  pinMode(s4, INPUT);
  pinMode(s5, INPUT);
  pinMode(s6, INPUT);
  pinMode(r1, INPUT);

}

void loop() {

  egy = digitalRead(s1);
  ketto = digitalRead(s2);
  harom = digitalRead(s3);
  negy = digitalRead(s4);
  ot = digitalRead(s5);
  hat = digitalRead(s6);
  raketa = digitalRead(r1);
{
  if (egy == HIGH) {
    
    mostani = 1;
    digitalWrite(led1, HIGH);
  }
  else {
    
    elozo = mostani;
    digitalWrite(led1, LOW);
  }
  if (ketto == HIGH) {
    mostani = 2;
    digitalWrite(led2, HIGH);
  }
  else {
    elozo = mostani;
    digitalWrite(led2, LOW);
  }
  if (harom == HIGH) {
    digitalWrite(led3, HIGH);
    mostani = 3;
  }
  else {
    digitalWrite(led3, LOW);
    elozo = mostani;
  }
  if (negy == HIGH) {
    digitalWrite(led4, HIGH);
    mostani = 4;
  }
  else {
    digitalWrite(led4, LOW);
    elozo = mostani;
  }
  if (ot == HIGH) {
    digitalWrite(led5, HIGH);
    mostani = 5;
  }
  else {
    digitalWrite(led5, LOW);
    elozo = mostani;
  }
  if (hat == HIGH) {
    digitalWrite(led6, HIGH);
    mostani = 6;
  }
  else {
    elozo = mostani;
    digitalWrite(led6, LOW);
  }
  if (raketa == HIGH) {
    digitalWrite(ledr, HIGH);
    mostani = 7;
  }
  else {
    digitalWrite(ledr, LOW);
    elozo = mostani;
  }
}
//Serial.println(mostani);
Serial.println(elozo);

}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

Huh, nem egészen világos mit szeretnél...
Ki követ kit és mivel követi? :(
http://www.tavir.hu - a gazda :)
Válasz küldése