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
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 »

if(gomb1=1){gombok++;}
Helyesbïtek
if(gomb1==1){gombok++;}
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 »

Nézelődők a többi fórum témákban is,
és megakadt a szemem a C prog. codon.
Ahogy a "nagyok csinálják".
De számomra még felfoghatatlan.
Csak egy kérésem lenne.
Ha nem túl nagy kérés!
Az altálam utóbbi megosztott kódot leírnà más prog. nyelven és még meg is osztaná velem meg hogy miben írta csak azért hogy lássam milyen különbségek vannak a nyelvek között. Azt megköszönöm!
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ód: Egész kijelölése

/*jcb powershift transm. c.s.*/

#include "LiquidCrystal.h"

LiquidCrystal lcd(4,5,6,7,8,9);

byte gombok=5;



void setup() {



lcd.begin(16,2);
pinMode(A0,INPUT);//gomb+
pinMode(A1,INPUT);//gomb-
pinMode(A2,INPUT);//uzemi fek
pinMode(A3,INPUT);//kezi fek
pinMode(A4,INPUT);//motor uzem jel

pinMode(2,OUTPUT);//elorre irany
pinMode(3,OUTPUT);//hatra irany
pinMode(10,OUTPUT);//2 es fokozat
pinMode(11,OUTPUT);//3 as fokozat
pinMode(12,OUTPUT);//4 es fokozat
  
}

void loop() {
if(analogRead(A0)==HIGH){
delay(3);
gombok++;}
if(analogRead(A1)==HIGH){
delay(3);
gombok--;}
if(analogRead(A2)==HIGH){
delay(3);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
}
if(analogRead(A3)==HIGH){
delay(3);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("KEZIFEK BEHUZVA");
delay(1000);
lcd.clear();
delay(100);
}
if(gombok!=5 && analogRead(A4)==LOW){gombok=5;
lcd.setCursor(0,0);
lcd.print("ELINDULASHOZ");
lcd.setCursor(0,1);
lcd.print("NYOMJ FEKET");}
//ide lehet kotni motornak indito megszakitast is
/* pl:if(analogRead(A4)==LOW && analogRead(A2)==HIGH){digitalWite(x,HIGH);*/
//az x pin egy rellet vezerel ami a gepnek az indito jelet szakitja meg
// a motor uzemjelet akar az olajnyomas kapcsolorol is le tudom venni
//ha van olajnyomas akkor megy a motor(elmeletileg) :)

gombok=constrain(gombok,1,9);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("IRANY:");
lcd.setCursor(0,1);
lcd.print("FOKOZAT:");

switch (gombok){
case 5:
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("URES");
lcd.setCursor(9,1);
lcd.print("0");
break;

case 4:
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("HATRA");
lcd.setCursor(9,1);
lcd.print("1");
break;

case 3:
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("HATRA");
lcd.setCursor(9 1);
lcd.print("2");
break;

case 2:
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("HATRA");
lcd.setCursor(9,1);
lcd.print("3");
break;

case 1:
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
lcd.setCursor(7,0);
lcd.print("HATRA");
lcd.setCursor(9,1);
lcd.print("4");
break;

case 6:
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("ELORRE");
lcd.setCursor(9,1);
lcd.print("1");
break;

case 7:

digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("ELORRE");
lcd.setCursor(9,1);
lcd.print("2");
break;

case 8:
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
lcd.setCursor(7,0);
lcd.print("ELORRE");
lcd.setCursor(9,1);
lcd.print("3");
break;

case 9:
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
lcd.setCursor(7,0);
lcd.print("ELORRE");
lcd.setCursor(9,1);
lcd.print("4");
break;}
}
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 »

Nagy kérés, hogy egyik nyelvről írj át egy másikra.
Tipp: A lefordított HEX-> disasm ->ASm (gépi kód)


Nyelvek közti különbség? Erről 1/2 - 1 éves oktatás van pl felsőfokú intézményben...

Tipp:
leriaat.web.elte.hu/007/PhD/pny/oop.ppt

https://forum.hwsw.hu/topic/88787-progr ... sonlitasa/


De: https://www.google.com/search?q=program ... Dt%C3%A1sa
http://www.tavir.hu - a gazda :)
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 »

ooops!!!!!!

Bocsi!!

Ezt nem tudtam, hogy ilyen nagy falat egy ilyen mozzanat!
Csak mert ahogy nézegettem a weben pascal, C, Assembly.....stb
van egy alap platforrm és az van hogy csak egyes parancsok és kisebb logikai összetevők különbözőek....
de ahogy látom itt nagyon többről is van szó....
:( :(

megint egy világ tört össze bennem.......... ha életem végéig tanulok akkor se fogom tudni......
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 »

Igen. Olyan ez mint bármely más szakma szelete:
- ha életed végéig tanulsz - akkor sem ismered teljesen....

Mitől bölcs valaki? Tudja azt, hogy mit nem tud még....


Azonban: az Arduino az indulásnak jó választásnak tűnik, mert:
- egyszerű utasításokból áll,
- soks-sok minta van hozzá (igaz az egyszerű (rész)feladatokra),
- sok eszköz azonnal élesíthető alatta
- utóbbi időben sok platformra lehet vele fordítani.

Ebből később ki lehet nőni a C/C++ irányába - az alapja úgyis ez a Arduinonak (ez van "mögötte").


Amit meg kell tanulni:
- programról diagram/blokkokban gondolkodni
- a programszervezést/felépítést megtanulni (lineáris programozást elfelejteni)
- sokat tanulni!


Nyelvek:
- Basic ágak
- ASM / gépi kód
- C/C++
- ....

Programozási nyelvek fája (2500+ nyelv van):
http://slideplayer.com/slide/6312477/
A legnagyobbak: https://en.wikipedia.org/wiki/C_(progra ... _index.png
http://www.tavir.hu - a gazda :)
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 »

Tisztelt Cseh Róbert!
Meg szeretném köszönni a válaszát és leginkább a bevezetést a micro vezérlők világába!
Nagyon rendes Öntől hogy egy ilyen tudást àtad. Persze értem az üzletpolitikájàt is, de ettől függetlenül használható módon lett leadva az anyag.
A 60 + 15 nap alatt tanfolyam egy kezdőnek (szerény személyem is) tökéletes elindulàsi alapot adott. Ha végig is csinálja bárki is ezt a tanfolyamot lelkiismeretesen és önszorgalomból kivesézi a tanfolyam témáját tudása szerint a legjobban, akkor az illető egy minimális tudás megszerzett és ha hosszú időn keresztül meg foglalkozik vele talán programozó is lehet belőle.
De sajnos olyan nincs hogy valaki ezt valamilyen felnőttképzési (OKJ) vagy valamilyen formában az alapokat tovább tudna fejleszteni. Éveket jelentene a tudás elsajátításában.
A tanfolyam végére én is el tudtam dönteni hogy melyik iranyvonalon szeretnék a microkkal foglalkozni annyi rálátást ad a tanfolyam. Csak mikor a legelején jártam még kérdéseket sem tudtam feltenni most így a végére megszámlálhatatlan kérdés merül fel bennem.
Külön köszönet a fórum segítőkész tagjainak is!
Nem búcsúzom maradok e világban és " aktív" tagja a tavir fórumnak.
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 »

Üdv ismét!
Hát már megint megakadtam.
Wire fügvényt szeretném használni.
Két minit szeretnék összekötni és egyik lenne a mester a másik a szolga. (Idáig müködne??) Amire használnám a rendszert. A masterre nyomogombok lennének kötve amik billenő kapcsoloként funkcionálnának szoftveresen. Majd a gombok állapotát elküldi a slavenek és az bekapcsolja a programban meghatározott kimenetet. A kérdés az hogy wire al ez ugye megoldhato!?.
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 »

A master oldali kód ez lenne.
Ha ez így ok akkor küldöm a slavet is.

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

int data[8];
int gomb[]={2,3,4,5,6,7,8,9,};//bemeneti gombok
int i=2;//seged valtozo

//KOMUNIKACIOS PROGRAMRESZ
#include<Wire.h>

void setup() {
if(i<9){i++;}
pinMode(gomb[i],INPUT);
Wire.begin();
Serial.begin(9600);

}

void loop() {
if(gomb[1]==HIGH){data[1]=11;
Wire.beginTransmission(2);
Wire.write(data[1]);
Wire.endTransmission();
delay(30);}
if(gomb[1]==HIGH&&data[1]==11){data[1]=10;
Wire.beginTransmission(2);
Wire.write(data[1]);
Wire.endTransmission();
delay(30);}
//kettes bemeneti gomb
if(gomb[2]==HIGH){data[2]=21;
Wire.beginTransmission(2);
Wire.write(data[2]);
Wire.endTransmission();
delay(30);}
if(gomb[2]==HIGH&&data[2]==21){data[2]=20;
Wire.beginTransmission(2);
Wire.write(data[2]);
Wire.endTransmission();
delay(30);}
//harmadik bemeneti gomb
if(gomb[3]==HIGH){data[3]=31;
Wire.beginTransmission(2);
Wire.write(data[3]);
Wire.endTransmission();
delay(30);}
if(gomb[3]==HIGH&&data[3]==31){data[3]=30;
Wire.beginTransmission(2);
Wire.write(data[3]);
Wire.endTransmission();
delay(30);}
//negyedik bemeneti gomb
if(gomb[4]==HIGH){data[4]=41;
Wire.beginTransmission(2);
Wire.write(data[4]);
Wire.endTransmission();
delay(30);}
if(gomb[4]==HIGH&&data[4]==41){data[4]=40;
Wire.beginTransmission(2);
Wire.write(data[4]);
Wire.endTransmission();
delay(30);}
//otodik bemeneti gomb
if(gomb[5]==HIGH){data[5]=51;
Wire.beginTransmission(2);
Wire.write(data[5]);
Wire.endTransmission();
delay(30);}
if(gomb[5]==HIGH&&data[5]==51){data[5]=50;
Wire.beginTransmission(2);
Wire.write(data[5]);
Wire.endTransmission();
delay(30);}
//hatodik bemeneti gomb
if(gomb[6]==HIGH){data[6]=61;
Wire.beginTransmission(2);
Wire.write(data[6]);
Wire.endTransmission();
delay(30);}
if(gomb[6]==HIGH&&data[6]==61){data[6]=60;
Wire.beginTransmission(2);
Wire.write(data[6]);
Wire.endTransmission();
delay(30);}
//hetedik bemeneti gomb
if(gomb[7]==HIGH){data[7]=71;
Wire.beginTransmission(2);
Wire.write(data[7]);
Wire.endTransmission();
delay(30);}
if(gomb[7]==HIGH&&data[7]==71){data[7]=70;
Wire.beginTransmission(2);
Wire.write(data[7]);
Wire.endTransmission();
delay(30);}
//nyolcadik bemeneti gomb

if(gomb[8]==HIGH){data[8]=81;
Wire.beginTransmission(2);
Wire.write(data[8]);
Wire.endTransmission();
delay(30);}
if(gomb[8]==HIGH&&data[8]==81){data[8]=80;
Wire.beginTransmission(2);
Wire.write(data[8]);
Wire.endTransmission();
delay(30);}
//kilencedik bemeneti gomb
if(gomb[9]==HIGH){data[9]=91;
Wire.beginTransmission(2);
Wire.write(data[9]);
Wire.endTransmission();
delay(30);}
if(gomb[9]==HIGH&&data[9]==91){data[9]=90;
Wire.beginTransmission(2);
Wire.write(data[9]);
Wire.endTransmission();
delay(30);}
//tizedik bemeneti gomb
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 »

Nem jó a tömb címzésed!

Az int data[8]; tömb cím tartománya data[0] - data[7]-ig terjedhet. Felette a data[8] már nem lefoglalt terület.
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 »

És a gombok feldolgozása így lenne jó:

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

//egyes bemeneti gomb
	if(digitalRead(gomb[0]) == HIGH){
		if(data[0] == 10){
			data[0] = 11;
		}else{
			data[0] = 10;
		}
		Wire.beginTransmission(2);
		Wire.write(data[0]);
		Wire.endTransmission();
		delay(30);
	}
	...
vegso79
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2018. december 11. kedd, 17:49

Re: Arduino programozás segítség

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

sziasztok egy autórádió kormányvezérlőt szeretnék megoldani arduino unoval ir vezérléssel,segítene nekem megirni esetleg valaki? :D
vegso79
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2018. december 11. kedd, 17:49

Re: Arduino programozás segítség

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

RENAULT_KEYPAD_IR_Sony-min.jpg
egy ilyet szeretnék készíteni
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
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 »

A jó segítség kérés úgy kezdődik, hogy megmutatod mit csináltál már meg!
És leírod hól akadtál el. Miben kérsz segítséget?
Ez azért lenne fontos, mert látnánk, hogy próbálkozol.
És a bemutatott példából következetnénk, hogy milyen szinten állsz a programozás tudományában.

Bemutatkozás nélkül, ismeretlenül.
Most úgy néz ki, hogy az első 2 hozzászólásodban szeretnéd elérni, hogy valaki megírja helyetted a programot?
vegso79
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2018. december 11. kedd, 17:49

Re: Arduino programozás segítség

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

Szia köszi hogy irtál,Péter vagyok,végig csináltam az arduino 60 napos oktatást de sajnos az ir programozásrol nem esett szó igy nem igazán tudom hogy kezdjek neki,ezért kellene segítség hogy kellene ezt a programot megirni.
Válasz küldése