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

Akkor ezek nem kapnak értéket:
byte A; üresek?
byte B; ?
byte C; ?
byte D; ?
char outData[]={A,B,C,D}; ? <Nem kerül bele semmi!

Ugyan valamit bohóckodsz a loop-ban velük. 
De az már a setup után hajtódik végre.
És mivel a setupban:
void setup(){
Wire.begin(2);
Wire.onReceive(data); < Itt hivod meg a data() függvényt, még nincsen semmi értéke outData-nak

pinMode(EI,INPUT);
pinMode(HI,INPUT);
pinMode(F1,INPUT);
pinMode(F2,INPUT);
pinMode(F3,INPUT);
pinMode(F4,INPUT);
pinMode(KF,INPUT);
pinMode(UF,INPUT);
...
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 »

Igy próbáld:

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

#include <Wire.h>

int address = 4;
byte buffer[4] = {1, 2, 3, 4};

void setup() {
  Wire.begin(address);
  Wire.onRequest(Request);
}

void loop() {}

void Request() {
  
  Wire.write(buffer, 4);
}

Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

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

Köszönöm szépen kapu48!
Így már működik!
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 »

Ha ez már megy! akkor próbálj tovább lépni!
Itt 1 lehetséges példa:

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

// slaveWire.ino
#include <Wire.h>
/* Ne rakt int-be mert feleslsgesen foglalsz memoriát!
int EI=2;
int HI=3;
int F1=10;
int F2=11;
int F3=12;
int F4=13;
int KF=14;
int UF=15;
*/
// Inkább definiáld a fordítonak az értékeket!
#define EI 2
#define HI 3
#define F1 10
#define F2 11
#define F3 12
#define F4 13
#define KF 14
#define UF 15
// És lehtőleg használj hosszabb neveket!
byte A;
byte B;
byte C;
byte D;

char outData[4];


void setup(){

	Wire.begin(2);

	Wire.onReceive(data);


	pinMode(EI,INPUT);
	pinMode(HI,INPUT);
	pinMode(F1,INPUT);
	pinMode(F2,INPUT);
	pinMode(F3,INPUT);
	pinMode(F4,INPUT);
	pinMode(KF,INPUT);
	pinMode(UF,INPUT);
  //Kellenének vissza jelző LEDek?
}


void loop(){


	if(digitalRead(EI)==LOW&&digitalRead(HI)==LOW){
		delay(3);
		A=0;
    outData[0]=A; // be rakjuk a tömbe az uj étéket
    Wire.onReceive(data); // elküldjük a változtatást
	}
	if(digitalRead(EI)==HIGH&&digitalRead(HI)==LOW){
		delay(3);
		A=1;
    outData[0]=A;
    Wire.onReceive(data);
	}

	if(digitalRead(EI)==LOW&&digitalRead(HI)==HIGH){
		delay(3);
		A=2;
    outData[0]=A;
    Wire.onReceive(data);
	}

	if(digitalRead(F1)==LOW&&digitalRead(F2)==LOW&&digitalRead(F3)==LOW&&digitalRead(F4)==LOW){
		delay(3);
		B=0;
    outData[1]=B;
    Wire.onReceive(data);
	}
	if(digitalRead(F1)==HIGH&&digitalRead(F2)==LOW&&digitalRead(F3)==LOW&&digitalRead(F4)==LOW){
		delay(3);
		B=1;
    outData[1]=B;
    Wire.onReceive(data);
	}
	if(digitalRead(F1)==LOW&&digitalRead(F2)==HIGH&&digitalRead(F3)==LOW&&digitalRead(F4)==LOW){
		delay(3);
		B=2;
    outData[1]=B;
    Wire.onReceive(data);
	}
	if(digitalRead(F1)==LOW&&digitalRead(F2)==LOW&&digitalRead(F3)==HIGH&&digitalRead(F4)==LOW){
		delay(3);
		B=3;
    outData[1]=B;
    Wire.onReceive(data);
	}
	if(digitalRead(F1)==LOW&&digitalRead(F2)==LOW&&digitalRead(F3)==LOW&&digitalRead(F4)==HIGH){
		delay(3);
		B=4;
    outData[1]=B;
    Wire.onReceive(data);
	}

	if(digitalRead(KF)==HIGH){
		delay(3);
		C=1;
    outData[2]=C;
    Wire.onReceive(data);
	}
	else{
	  C=0;
	  outData[2]=C;
    Wire.onReceive(data);
	}


	if(digitalRead(UF)==HIGH){
		delay(3);
		D=1;
    outData[3]=D;
    Wire.onReceive(data);
	}
	else{
	  D=0;
	  outData[3]=D;
    Wire.onReceive(data);
	}

}

int data(){
  int elment = 0;
	elment = Wire.write(outData,4);
  if(elment == 4){  // még kezdetleges hiba javítás kisérlet
    return elment;  // ok vissza adjuk az elküldött byteok számát
  }else{    // error ujra probáljuk
    Wire.onReceive(data); // valahogyan jelezni kellene a hibát a felhasználonak!
  }
  
}

Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

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

Oké értem én hogy gőzmozdony, de mi hajtja!?

Amúgy köszönöm hogy foglalkozol vele!
Hogy lásd mire kell ezt használnom, pár sorban leírom.

Slave összeszedi a kontaktok állapotát.
Master bekéri és eldönti mit akarunk és jó e a kombinácio úgy hogy egy második slave adatait is bekéri ami fordulatszámot figyel, meg analog jeleket.
Majd egy harmadik slavenak elküldi hogy mi történjen, ami visszaküldi a masternak mi történt. 5 db szolenoidot fog működtetni. Természetesen optocstolt rellével.

Megbonyolítottam?
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 »

Értem én, hogy repülni akarsz, mint a rakéta!
Bár szerintem okosabb lenne lépésről lépésre haladni a cél felé!
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 »

Gépek melletti üzemre az I2C kommunikáció veszet ügy!
Egyrészt roppant lassú!
Másrészt minden 5V-os átvitel zavar érzékeny és gyenge a jelszint.
Nem lehet nagyobb távolságra elvinni.
Inkább használjál soros illesztőket mindkét oldalon.
Gyorsabb és hardveres átvitelt valósit meg, 12V-on kevésbé érzékeny.
Nagyobb távolságot tudsz biztonságosabban áthidalni.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

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

Ez jó ötlet!
De mi számít nagy távolságnag i2c nél?
Amit én át szerettem volna hidaln az kb 2-3 méter.
De ha bezavarja az 5v ot gép rendszerfeszültsége akkor tényleg nem jó ez az elképzelésem.

Soros illesztés!?
Még nem volt vele dolgom.
Utánnajárok.!
Köszönöm az infót.
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 »

2m-re ilyeneket használj párban: https://www.dx.com/p/rs232-serial-port- ... KJV1iIkmpo
Sima soros komunikáció 12V-on oda vissza!
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

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

És a CAN BUS az milyen lenne ide.
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 »

Annyival jobb, hogy 1 SPI portra több scan modul is köthető.
Csak _CS vezérlő pin kel mindnek külön.
Míg a soros portra csak 1 rs238-as.
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 »

Ha csavart erű hálozati kábelt használsz, kevésbé lessz zavarérzékeny.
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 »

Viszont a soros komunikálás mehet egyszerre mindkét irányba.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

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

Segítséget szeretnék kérni microcontroler téren!
A fenti projektemel hardvare ügyében lenne kapcsolatos.
Azért gondoltam hogy igy szeparálnám szét a vezérlést mert sok dolgot kell csináln.
-2 fordulatszámjel
-3-4 analóg
-8-10 kontaktus állapot
-idő mérés és elemzés
-kijelzés szinte az összes értéket
.
.
Meg még mi jut eszembe...
Szóval webshopban nézelődök és rátalálok egy ilyenre
Cortex m3
Leírásából a memoriakapacitásán kívül a 84MHz órajel fogott meg.
De jó e nekem????
Másabb e a szoftver része mint amit ardunál megszoktam?
Vagy miben másabb..??
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 »

Ha rá gondoltál: DUE (SAM8XE; ARM, Cortex-M3;CH340 ?
Nyugodtan belevághatsz, programozás terén mindenben kompatilis az arduinoval.
Természetesen a több tudás, nagyobb bonyolultsággal jár, hardver és programozás terén is.

Én kimondottan szeretem a DUET, ennél már csak az STM32-es ARM-ok jobbak.
Válasz küldése