Arduino programozás segítség
Re: Arduino programozás segítség
Sziasztok segítségeteket kérem
Eddig Bascomban programoztam, váltottam arduinora ,ami megőrjít, írok egy programot (bármit) ami jól működik,módosítom, a vázlat jól lefordul. Feltöltéskor az alábbi hibaüzenetet kapom
avrdude: stk500_paged_load(): (a) protocol error, expect=0x10, resp=0x00
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00
utána már nem tudok feltölteni programot (a blink-et sem ) mindig ugyanazt a hibát írja ki egészen addig amíg újra nem indítom a gépemet teljesen
olyan mintha beakadna az usb kezeles
win7 és arduino1.8.9 van a gépemen
mi erre a megoldás?
Eddig Bascomban programoztam, váltottam arduinora ,ami megőrjít, írok egy programot (bármit) ami jól működik,módosítom, a vázlat jól lefordul. Feltöltéskor az alábbi hibaüzenetet kapom
avrdude: stk500_paged_load(): (a) protocol error, expect=0x10, resp=0x00
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00
utána már nem tudok feltölteni programot (a blink-et sem ) mindig ugyanazt a hibát írja ki egészen addig amíg újra nem indítom a gépemet teljesen
olyan mintha beakadna az usb kezeles
win7 és arduino1.8.9 van a gépemen
mi erre a megoldás?
Re: Arduino programozás segítség
Közben rájöttem hogy mi okozhatja, ha használom a soros monitort és bezárom valamiért nem mindig zárja le az USB-n a kommunikációt.
Nem tudom hogy ez a gép problémája vagy windózé, vagy arduinóé.
Nem tudom hogy ez a gép problémája vagy windózé, vagy arduinóé.
Re: Arduino programozás segítség
Szoftverhiba, PC oldalon.
Régebbi Arduino kiadásnál is csinálja?
Régebbi Arduino kiadásnál is csinálja?
http://www.tavir.hu - a gazda
Re: Arduino programozás segítség
Köszi a választ közben én is erre jutottam mert ugyanez a verzió másik gépen nem csinálja .
Re: Arduino programozás segítség
Sokan mondták azt, hogy az arduino hardveresen nem arra van tervezve, hogy mondjuk egy non-stop futtatást kibírjon, hónapokon keresztül.
He azt is modták már, hogy azzá lehet tenni.
Nos engem ez érdekelne, hogy mik is a korlátok és hogyan lehet leküzdeni őket.
He azt is modták már, hogy azzá lehet tenni.
Nos engem ez érdekelne, hogy mik is a korlátok és hogyan lehet leküzdeni őket.
Re: Arduino programozás segítség
Az Arduino? Melyik? Csak mert gyártanak sokféle variánst. Az alapvetően elmondható, hogy bármelyiket is használod, a mikrokontroller az egy ipari cucc. Arra tervezték, hogy egyszer bekapcsolod, és évekig megy.
Maga a fejlesztőeszköz is bírja ezt. Tehát alapvetően nem az idővel van a gond. Nem tudom, hol hallottál ilyet.
Ott lehet gond, hogy ha mechanikai terhelésnek (rázkódás, ütések) van kitéve. Olyan helyre illik saját, akár műgyantával kiöntött elektronikát készíteni.
A másik probléma az elektromosan zajos környezet. De ott sem idővel jön a probléma, hanem viszonylag hamar. Jobb esetben csak meghülyül a mikrokontroller, rosszabb esetben tönkre is megy. Ezért a felhasználási körülmények függvényében védelmet kell rakni minden ki és bemenetre. Minél mostohább a környezet, annál durvábbat.
Maga a fejlesztőeszköz is bírja ezt. Tehát alapvetően nem az idővel van a gond. Nem tudom, hol hallottál ilyet.
Ott lehet gond, hogy ha mechanikai terhelésnek (rázkódás, ütések) van kitéve. Olyan helyre illik saját, akár műgyantával kiöntött elektronikát készíteni.
A másik probléma az elektromosan zajos környezet. De ott sem idővel jön a probléma, hanem viszonylag hamar. Jobb esetben csak meghülyül a mikrokontroller, rosszabb esetben tönkre is megy. Ezért a felhasználási körülmények függvényében védelmet kell rakni minden ki és bemenetre. Minél mostohább a környezet, annál durvábbat.
Re: Arduino programozás segítség
Köszönöm szépen az infót !
Re: Arduino programozás segítség
Kód: Egész kijelölése
/*Hardware: atmel 328 arduino pro mini 5V 16 MHz*/
#define pwmpinXP 3 //output pin X axle positive line
#define pwmpinXN 5 //output pin X axle negative line
#define pwmpinYP 6 //output pin Y axle positive line
#define pwmpinYN 9 //output pin Y axle negative line
#define tszkopOut 10 //output pin Z axle positive line
#define tszkopIn 11 //output pin Z axle megative line
#define potiXaxle A3 //Input analog signal X axle
#define potiYaxle A2 // Input analog sognal Y axle
int potiertekX; //var.potentiometer process X axle
int potiertekY; //var.potentiometer process Y axle
int kitoltesXP; // ioutput pwm signal + X
int kitoltesXN; // output pwm signal - X
int kitoltesYP; // output pwm signal + Y
int kitoltesYN; // output pwm signal - Y
#define nyomogombZP 2 //input pin Z axle positive line
#define nyomogombZN 4 // input pin Z axle negative line
void setup(){
//Setup In and Out pins
pinMode(pwmpinXP,OUTPUT);
pinMode(pwmpinXN,OUTPUT);
pinMode(pwmpinYP,OUTPUT);
pinMode(pwmpinYN,OUTPUT);
pinMode(tszkopOut,OUTPUT);
pinMode(tszkopIn,OUTPUT);
pinMode(nyomogombZP,INPUT);
pinMode(nyomogombZN,INPUT);
}
void loop(){
potiertekX=analogRead(potiXaxle)/4; //analog signal read X axle potentiometer
potiertekY=analogRead(potiYaxle)/4; //analog signal read Y axle potentiometer
// switch process
if(digitalRead(nyomogombZN)==HIGH){digitalWrite(tszkopIn,HIGH);}
else{digitalWrite(tszkopIn,LOW);}
if(digitalRead(nyomogombZP)==HIGH){digitalWrite(tszkopOut,HIGH);}
else{digitalWrite(tszkopOut,LOW);}
/*X axle up and down*/
switch (potiertekX){
//X axle not run
case 120: kitoltesXP=0;
break;
case 121: kitoltesXP=0;
break;
case 122: kitoltesXP=0;
break;
case 123: kitoltesXP=0;
break;
case 124: kitoltesXP=0;
break;
case 126: kitoltesXP=0;
break;
case 127: kitoltesXP=0;
break;
case 128: kitoltesXP=0;
break;
case 129: kitoltesXP=0;
break;
case 130: kitoltesXP=0;
break;
case 131: kitoltesXN=0;
break;
case 132: kitoltesXN=0;
break;
case 133: kitoltesXN=0;
break;
case 134: kitoltesXN=0;
break;
case 135: kitoltesXN=0;
break;
case 136: kitoltesXN=0;
break;
case 137: kitoltesXN=0;
break;
case 138: kitoltesXN=0;
break;
case 139: kitoltesXN=0;
break;
case 140: kitoltesXN=0;
break;
//X axle up
case 117: kitoltesXP=2;
break;
case 115: kitoltesXP=6;
break;
case 112: kitoltesXP=10;
break;
case 110: kitoltesXP=12;
break;
case 108: kitoltesXP=15;
break;
case 105: kitoltesXP=20;
break;
case 100: kitoltesXP=25;
break;
case 95: kitoltesXP=30;
break;
case 90: kitoltesXP=40;
break;
case 85: kitoltesXP=50;
break;
case 80: kitoltesXP=60;
break;
case 75: kitoltesXP=70;
break;
case 70: kitoltesXP=90;
break;
case 65: kitoltesXP=100;
break;
case 60: kitoltesXP=120;
break;
case 55: kitoltesXP=150;
break;
case 50: kitoltesXP=170;
break;
case 40: kitoltesXP=180;
break;
case 30: kitoltesXP=190;
break;
case 20: kitoltesXP=200;
break;
case 10: kitoltesXP=220;
break;
case 0: kitoltesXP=255;
break;
//X axle down
case 141: kitoltesXN=2;
break;
case 144: kitoltesXN=4;
break;
case 147: kitoltesXN=7;
break;
case 150: kitoltesXN=10;
break;
case 153: kitoltesXN=12;
break;
case 156: kitoltesXN=15;
break;
case 160: kitoltesXN=17;
break;
case 165: kitoltesXN=20;
break;
case 170: kitoltesXN=25;
break;
case 175: kitoltesXN=30;
break;
case 180: kitoltesXN=35;
break;
case 185: kitoltesXN=40;
break;
case 190: kitoltesXN=50;
break;
case 195: kitoltesXN=60;
break;
case 200: kitoltesXN=80;
break;
case 205: kitoltesXN=100;
break;
case 210: kitoltesXN=120;
break;
case 215: kitoltesXN=150;
break;
case 220: kitoltesXN=160;
break;
case 225: kitoltesXN=170;
break;
case 230: kitoltesXN=180;
break;
case 235: kitoltesXN=200;
break;
case 240: kitoltesXN=210;
break;
case 250: kitoltesXN=220;
break;
case 255: kitoltesXN=255;
break;
}
switch (potiertekY){
//Y axle not run
case 100: kitoltesYP=0;
break;
case 108: kitoltesYP=0;
break;
case 110: kitoltesYP=0;
break;
case 115: kitoltesYP=0;
break;
case 118: kitoltesYP=0;
break;
case 119: kitoltesYP=0;
break;
case 120: kitoltesYP=0;
break;
case 121: kitoltesYP=0;
break;
case 122: kitoltesYP=0;
break;
case 123: kitoltesYP=0;
break;
case 124: kitoltesYP=0;
break;
case 126:{kitoltesYP=0;}
break;
case 127: kitoltesYP=0;
break;
case 128: kitoltesYP=0;
break;
case 129: kitoltesYP=0;
break;
case 130: kitoltesYN=0;
break;
case 131: kitoltesYN=0;
break;
case 132: kitoltesYN=0;
break;
case 133: kitoltesYN=0;
break;
case 134: kitoltesYN=0;
break;
case 135: kitoltesYN=0;
break;
case 136: kitoltesYN=0;
break;
case 137: kitoltesYN=0;
break;
case 138: kitoltesYN=0;
break;
case 139: kitoltesYN=0;
break;
case 140: kitoltesYN=0;
break;
case 142: kitoltesYP=0;
break;
case 144: kitoltesYP=0;
break;
case 146: kitoltesYP=0;
break;
case 148: kitoltesYP=0;
break;
case 150: kitoltesYP=0;
break;
case 155: kitoltesYP=0;
break;
case 157: kitoltesYP=0;
break;
case 160: kitoltesYP=0;
break;
case 165: kitoltesYP=0;
break;
//Y axle up
case 117: kitoltesYP=2;
break;
case 95: kitoltesYP=30;
break;
case 90: kitoltesYP=40;
break;
case 85: kitoltesYP=50;
break;
case 80: kitoltesYP=60;
break;
case 75: kitoltesYP=70;
break;
case 70: kitoltesYP=90;
break;
case 65: kitoltesYP=100;
break;
case 60: kitoltesYP=120;
break;
case 55: kitoltesYP=150;
break;
case 50: kitoltesYP=170;
break;
case 40: kitoltesYP=180;
break;
case 30: kitoltesYP=190;
break;
case 20: kitoltesYP=200;
break;
case 10: kitoltesYP=220;
break;
case 0: kitoltesYP=255;
break;
//Y axle down
case 170: kitoltesYN=25;
break;
case 175: kitoltesYN=30;
break;
case 180: kitoltesYN=35;
break;
case 185: kitoltesYN=40;
break;
case 190: kitoltesYN=50;
break;
case 195: kitoltesYN=60;
break;
case 200: kitoltesYN=80;
break;
case 205: kitoltesYN=100;
break;
case 210: kitoltesYN=120;
break;
case 215: kitoltesYN=150;
break;
case 220: kitoltesYN=160;
break;
case 225: kitoltesYN=170;
break;
case 230: kitoltesYN=180;
break;
case 235: kitoltesYN=200;
break;
case 240: kitoltesYN=210;
break;
case 250: kitoltesYN=220;
break;
case 255: kitoltesYN=255;
break;
}
//output control
analogWrite(pwmpinXP,kitoltesXP);
analogWrite(pwmpinXN,kitoltesXN);
analogWrite(pwmpinYP,kitoltesYP);
analogWrite(pwmpinYN,kitoltesYN);
}
Re: Arduino programozás segítség
Üdv mindenkinek! A fenti kóddal kapcsolatban szeretném a véleményeteket és segítségeteket kikérni. Lényege annyi hogy joystik el irányítok valamit.
A shopban kapható joystick ról van szó. X Y irány potiról van működtetve. A Z irány nyomógombról.A kód működik csak szerintem biztos van egyszerűbb módja is a megvalósításának csak valahogy nem áll össze a matek. Alaphelyzetben a potik kb középértéken állnak. És az értékük változásával szsbályzom a a pwm kitöltési tényezőit. De ebben a formában nem túl elegáns nekem.
A shopban kapható joystick ról van szó. X Y irány potiról van működtetve. A Z irány nyomógombról.A kód működik csak szerintem biztos van egyszerűbb módja is a megvalósításának csak valahogy nem áll össze a matek. Alaphelyzetben a potik kb középértéken állnak. És az értékük változásával szsbályzom a a pwm kitöltési tényezőit. De ebben a formában nem túl elegáns nekem.
Re: Arduino programozás segítség
select-case elegánsabban:
if (éréek>xxx && érték <yyyy) {
legyen valami;}
vagy a select-case esetén a case tartományokat adod meg.
Tipp: a poti bizonytalanságot/kézremegést tedd bele. ne 1-1 mérésed legyen, hanem én futóátlagot csinálnék. Utolsó 10...200 mérés átlagolva. Ez a mérési bizonytalansági hibát is szűri..
if (éréek>xxx && érték <yyyy) {
legyen valami;}
vagy a select-case esetén a case tartományokat adod meg.
Tipp: a poti bizonytalanságot/kézremegést tedd bele. ne 1-1 mérésed legyen, hanem én futóátlagot csinálnék. Utolsó 10...200 mérés átlagolva. Ez a mérési bizonytalansági hibát is szűri..
http://www.tavir.hu - a gazda
Re: Arduino programozás segítség: String konverzió oda-vissza
Sziasztok! Lehet már számtalanszor előfordult a kérdés...de...
Kommunikáció során CRC és Check summa számoláshoz kellenének a karakter konverziók. Hogyan tudom kinyerni egy string ASCII kódjait? Illetve hogyan alakítom vissza a byte-kódokat stringre, amit már megesz a Serial objektum?
Köszönöm...
Kommunikáció során CRC és Check summa számoláshoz kellenének a karakter konverziók. Hogyan tudom kinyerni egy string ASCII kódjait? Illetve hogyan alakítom vissza a byte-kódokat stringre, amit már megesz a Serial objektum?
Köszönöm...
Re: Arduino programozás segítség
Elég a típus módosítás is: (uint16_t)txtMsg
Kód: Egész kijelölése
/*
String length()
Examples of how to use length() in a String.
Open the Serial Monitor and start sending characters to see the results.
created 1 Aug 2010
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/StringLengthTrim
*/
//unsigned int lastStringLength = txtMsg.length(); // previous length of the String
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(230400);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// send an intro:
// Serial.println("\n\nString length():");
Serial.println();
String txtMsg = ""; // a string for incoming text
txtMsg = "Helo vilag!";
uint16_t cheksum = 0;
for(uint8_t i = 0; i < txtMsg.length(); i++){
cheksum += (uint16_t)txtMsg[i];
}
Serial.print("cheksum: ");
Serial.println(cheksum);
Serial.println(txtMsg);
}
void loop() {
}
Re: Arduino programozás segítség
És valóban...
Köszönöm!
Pusztán a kíváncsiság hajt...miért nem egyenértékű a két felírás?
byte intN;
Serial.print(":" + (char)intN);
ezzel
byte intN;
Serial.print(":");
Serial.print((char)intN);
Az első felírás hibás adatátvitelt eredményez, míg a második helyeset.
Köszönöm!
Pusztán a kíváncsiság hajt...miért nem egyenértékű a két felírás?
byte intN;
Serial.print(":" + (char)intN);
ezzel
byte intN;
Serial.print(":");
Serial.print((char)intN);
Az első felírás hibás adatátvitelt eredményez, míg a második helyeset.
Re: Arduino programozás segítség
Változó típusú string ki íratásához használ az "sprintf()" függvényt:
bövebben: http://lidi.uw.hu/krc/files/07.html#7.2.
bövebben: http://lidi.uw.hu/krc/files/07.html#7.2.
Kód: Egész kijelölése
#include <stdio.h>
char *string;
byte intN = 36;
sprintf(string, ": %u", intN);
Serial.print(string);
// vagy:
sprintf(string, ": %c", intN);
Serial.print(string);
Re: Arduino programozás segítség
Tetszőlegesen variálhatod a szöveg vagy változók egybe fűzését.
Pl.:
Pl.:
Kód: Egész kijelölése
byte O = 12, P = 59, MP = 30;
sprintf(string, "Ora: %u Perc: %u mp: %u", O, P, MP);
Serial.println(string);