Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   37 / 851
(#) TavIR-AVR válasza erdeidominik1999 hozzászólására (») Júl 13, 2014 /
 
"Basic authentication" + Arduino + Ethernet
(#) Raspun hozzászólása Júl 13, 2014 /
 
Hello!
Eddig még nem volt semmilyen arduino-m de most megvenném ezt a starter kit-etBővebben: Kit
De ebben nem uno hanem Duemilanove van. Az a kérdésem hogy van-e olyan jó a Duemilanove mint az uno? Megéri-e megvenni a kitet?
(#) TavIR-AVR hozzászólása Júl 13, 2014 /
 
Igen, csereszabatos.

De tipp:
Bővebben: Link
(#) Zaustuv hozzászólása Júl 13, 2014 /
 
Üdv ismét!

Lenne egy programozásban haladókhoz szóló kérdésem:

Van egy Arduino sketch fájlom, amit egy adóvevőhöz írok, és el szeretném érni azt, hogy mind az adó, mind a vevő funkció egy fájlon belül maradjon, és egy külső program segítségével először:
- módosítanám a szöveges fájl egy részletét, amitől vagy az adóhoz, vagy a vevőhöz szóló eljárások lesznek aktívak, majd
- fel szeretném tölteni ezt a szöveges fájlt a programozón keresztül egy Arduino UNO panelra, és
- végül visszaállítanám az eredeti .ino szöveges fájlt, ahogy az a módosítás előtt volt.

A gondom a középső lépéssel van. Valamelyest tudok C-ben programozni, de nincs nagyon ötletem rá hogy egy C programon keresztül hogyan tudnám elérni az Atmel programozó szolgáltatásait (és angol fórumokon se nagyon találtam erre választ).
Akinek van ötlete, segítsen légyszi!

64 bites Windows 7 fut a gépemen.
(#) icserny válasza Zaustuv hozzászólására (») Júl 13, 2014 /
 
Feltételes fordításra gondoltál?

  1. #define ADO  
  2. #if defined(ADO)
  3.     blabla1...
  4. #else
  5.     blabla2...
  6. #endif


A fenti változatban a blabla1 helyére írt programsorok fordulnak le. Ha a #define kezdetű sort kommentbe teszed, akkor pedig a blabla helyére írt (a vevő számára szükséges) sorok fordulnak le.

Idézet:
„- fel szeretném tölteni ezt a szöveges fájlt a programozón keresztül egy Arduino UNO panelra”
Előbb le kel fordítani, és a lefordított kódot kell letölteni a kártyára. Ezt az Arduino IDE elvégzi, ha a letöltés gombra kattintasz.
(#) Zaustuv válasza icserny hozzászólására (») Júl 13, 2014 /
 
Nem. Én arra gondoltam, hogy írok egy c programot, ami megnyitja a sketch fájlt, és a parancssoron keresztül felkínál egy menüt, amiben eldönthetem, hogy a sketch fájlból az adót vagy a vevőt tegye inaktívvá (pl más kezdőértékkel való feltöltéssel), ezután pedig kapcsolatba lép az Arduino programozójával és megmondja neki, hogy fordítsa le és töltse fel a programot a kártyára. Ez utóbbit nem tudom, hogyan lehetne megoldani.
(#) Kera_Will válasza Zaustuv hozzászólására (») Júl 14, 2014 /
 
Ha van elég helyed a programoknak akkor a teljes funkcionalitást írd bele 1 forrásba.
A döntést pedig a vason oldod meg , hogy RX/TX módban fog üzemelni.
Ezt 1 digit port bemenet beáldozásával érheted el fix H/L szintű lesz a RX/TX esetén.
Így nem kell azon se vergődni , hogy kétféle adó vevő forrást kell írni , tesztelni , ne keverd össze melyik vasba mi megy ?
Az elején ráfut a port tesztre majd eldönti melyik ágon fut tovább.
Nem egyszerűbb?
Persze lehet drága az input port beáldozása ha azokból meg szűken vagyunk+program tár növekedés is van.
(#) Karesz85 válasza Zaustuv hozzászólására (») Júl 14, 2014 /
 
Kera_Will válaszát kiegészíteném, ha szoftveresen akarod vezérelni az Arduinot, és kapcsolatban is van(sketch feltöltés) akkor Serial.read() is működhet.
A hozzászólás módosítva: Júl 14, 2014
(#) airwalker hozzászólása Júl 15, 2014 /
 
Sziasztok!
Arduinoval szeretnék vezérelni egy PT2313-as audio processzort, ami I2C protokollal kommunikál a mikrovezérlővel. Az ic adatlapjában le vannak írva a funkciók bytejai, viszont még nem igazán látom át a dolgokat. Kerestem neten leírásokat, ezek mindegyike .hex fileban közli a hozzá tartozó sketchet. Így jelenleg betekintést sem nyerhetek, hogyan is néz ki egy ilyen program Arduinohoz. Meg szeretném tanulni, hogyan kell bánni ezzel az I2C protokollal, az ichez pedig szeretnék egy programot írni, mert egy karácsonyi ajándék igen lényeges része lesz és gondoltam elkezdem időben. Segítséget/tanácsokat szeretnék kérni ezzel kapcsolatban.
(#) Iceman válasza airwalker hozzászólására (») Júl 16, 2014 /
 
Szia!

Itt van hozzá egy library.
(#) varttina válasza airwalker hozzászólására (») Júl 16, 2014 /
 
Az I2C-vel nekem is meggyűlt a bajom. Egy 3V-os TEA5767 modult akartam életre kelteni. Megépítettem hozzá ezt a szintillesztőt. Összedugtam próbapanelon, de nem működött. Kihagytam az illesztőt, közvetlenül összekapcsoltam az Arduino-t a TEA modullal, ahogy rádugtam az USB-re, egyből megszólalt.
(#) TavIR-AVR válasza varttina hozzászólására (») Júl 17, 2014 /
 
És a lábak belső védődiódáján át van áramfolyásod. Örülj, h megy a modul....
A lábon MAX. Vcc+0.7V lehet, különben halálozás lesz a vége. Az I2C ellenállások 3.3Vra mennek?
(#) varttina válasza TavIR-AVR hozzászólására (») Júl 17, 2014 /
 
Igen, az ellenállások 3.3V-ra mennek. Igazából csak végső elkeseredésemben próbálkoztam a közvetlen összeköttetéssel. Nagyjából egy éve rendeltem két darab ilyen modult, de mindeddig csak a fiók mélyén hevertek, mivel nem szabványos a lábkiosztásuk, és eddig nem találtam meg a leírását. A kérdésem igazából az lenne, hogy működőképes-e a fentebb linkelt szintillesztő, vagy pedig máshol szúrtam el valamit? Multiméterrel nézve jónak tűnik, de beépítve mégsem akar működni.
(#) andyka hozzászólása Júl 17, 2014 /
 
Sziasztok, elkelne egy kis segitseg.
Nagyon kezdo vagyok e teren, de talaltam a neten egy megfelelo sketch-et amit atalakitsak (tobb in, meg out). Mukodik is, csak egy a bibi, nincs meg az a tulajdonsaga hogy egy adott ido leteltevel (mondjuk 5 mp) onmagatol visszaterjen a "void resistance()" (menu = 0) mukodesbe, vagyis mindig vegig kell futtatni az egesz menuponton. Lehet-e ezen segiteni ?
  1. #include "LiquidCrystal.h"
  2.  
  3. const int inputSensor = A0;       // On nomme la broche A0 connectée au capteur
  4.  
  5. const int buttonPin = 7;
  6. const int buttonPin_2 = 6;
  7. const int buttonPin_3 = 5;
  8.  
  9. int buttonState = 0;
  10. int buttonState_2 = 0;
  11. int buttonState_3 = 0;
  12.  
  13. const int led1 = 3;              // On nomme la broche 12 connectée à la LED blanc
  14. const int led2 = 2;              // On nomme la broche 13 connectée à la LED bleue
  15. const int led3 = 4;              // On nomme la broche 13 connectée à la LED rouge
  16.  
  17. float temp_min = 27.0 ; //37.7
  18. float temp_max = 30.2 ; //38.2
  19. float hysteresis = 1 ;
  20.  
  21. LiquidCrystal lcd(7,8,9,10,11,12);  // les pins utilisés par le LCD
  22.  
  23. int menu = 0 ;
  24.  
  25. void setup(){
  26.  
  27.   pinMode(inputSensor, INPUT);  // Déclaration du capteur en entrée
  28.   pinMode(inputSensor2, INPUT);  // Déclaration du capteur en entrée
  29.  
  30.   pinMode(buttonPin, INPUT);
  31.   pinMode(buttonPin_2, INPUT);
  32.  
  33.   pinMode(led1, OUTPUT);        // Déclaration de la LED bleue en entrée
  34.   pinMode(led2, OUTPUT);        // Déclaration de la LED verte en entrée
  35.   pinMode(led3, OUTPUT);        // Déclaration de la LED verte en entrée
  36.  
  37.   lcd.begin(16, 2);
  38.   Serial.begin(9600);
  39.   lcd.clear();
  40.   lcd.setCursor(0,0);
  41.   lcd.print("Thermostat v 1.0" );
  42.   delay(3000);
  43. lcd.clear();
  44. }
  45.  
  46. void loop(){
  47.    Serial.println(menu);
  48.   buttonState = digitalRead(buttonPin);
  49.   if (buttonState == HIGH) {
  50.    menu ++;
  51.    delay(500);
  52. }
  53.  
  54. if (menu == 0) {
  55.   resistance();
  56.   }
  57. if (menu == 1) {
  58.   menu_1();
  59.   }
  60. if (menu == 2) {
  61.   menu_2();
  62.   }
  63. if (menu == 3) {
  64.   menu_3();
  65.   }  
  66. if (menu == 4) {
  67.   menu = 0;
  68.   }  
  69.  //fonction resistance  
  70. }
  71.  
  72. void resistance(){
  73. lcd.clear();
  74.   int degres = analogRead(inputSensor);  //degres récupère la valeur analogique du capteur
  75.   float floatDegres = degres*0.49;      //la valeur est ici convertie en degrés
  76.    
  77.     lcd.setCursor(0,0);
  78.     lcd.print("Temp:   " ); lcd.print(floatDegres); lcd.print((char)223); lcd.print("C" );
  79.     delay(500);
  80.  
  81.   if (floatDegres < temp_min + hysteresis){
  82.   digitalWrite (led1, HIGH); //chauffe
  83.   digitalWrite (led2, LOW); //temp ok
  84.   digitalWrite (led3, LOW); //erreur
  85.   }
  86.   else if (floatDegres > temp_min && floatDegres < temp_max ){
  87.     digitalWrite (led1, LOW); //chauffe
  88.     digitalWrite (led2, HIGH); //temps ok
  89.     digitalWrite (led3, LOW); //erreur
  90.   }
  91.   else if (floatDegres > temp_max ){
  92.     digitalWrite (led1, LOW); //chauffe
  93.     digitalWrite (led2, LOW); //temp ok
  94.     digitalWrite (led3, HIGH); //erreur
  95.   }
  96. }
  97.  
  98. void menu_1(){
  99.     buttonState_2 = digitalRead(buttonPin_2);
  100.         if (buttonState_2 == HIGH) {
  101.         temp_min = temp_min + 0.1;
  102.         delay(200);
  103.       }
  104.     buttonState_3 = digitalRead(buttonPin_3);
  105.         if (buttonState_3 == HIGH) {
  106.         temp_min = temp_min - 0.1;
  107.         delay(200);
  108.       }
  109.      lcd.clear();
  110.      lcd.setCursor(0,0);
  111.      lcd.print(" Reglage T-min");
  112.      lcd.setCursor(4,1);
  113.      lcd.print(temp_min); lcd.print((char)223); lcd.print("C" );
  114.      delay(100);
  115. }
  116.  
  117. void menu_2(){
  118.       buttonState_2 = digitalRead(buttonPin_2);
  119.       if (buttonState_2 == HIGH) {
  120.          temp_max = temp_max + 0.1;
  121.          delay(200);
  122.       }
  123.        buttonState_3 = digitalRead(buttonPin_3);
  124.       if (buttonState_3 == HIGH) {
  125.          temp_max = temp_max - 0.1;
  126.          delay(200);
  127.       }
  128.      lcd.clear();
  129.      lcd.setCursor(0,0);
  130.      lcd.print(" Reglage T-max");
  131.      lcd.setCursor(4,1);
  132.      lcd.print(temp_max); lcd.print((char)223); lcd.print("C" );
  133.      delay(100);
  134. }
  135.  
  136. void menu_3(){
  137.     buttonState_2 = digitalRead(buttonPin_2);
  138.       if (buttonState_2 == HIGH) {
  139.          hysteresis = hysteresis + 0.1;
  140.          delay(200);
  141.       }
  142.     buttonState_3 = digitalRead(buttonPin_3);
  143.       if (buttonState_3 == HIGH) {
  144.          hysteresis = hysteresis - 0.1;
  145.          delay(200);
  146.       }
  147.      lcd.clear();
  148.      lcd.setCursor(0,0);
  149.      lcd.print("Reglage decalage");
  150.      lcd.setCursor(4,1);
  151.      lcd.print(hysteresis); lcd.print((char)223); lcd.print("C" );
  152.      delay(100);
  153. }
A hozzászólás módosítva: Júl 17, 2014
(#) mikrokapcsolo hozzászólása Júl 17, 2014 /
 
Sziasztok!
Kitaláltam egy programötletet, amit majd egy atmega328-ra írok meg, flowcode-ban. Viszont, nincs jelenleg programozóm, amivel ki tudnám próbálni, hogy jó-e a flowcode-ban írt progi. Azt találtam ki, hogy ugyanazt az ötlet megírom az arduinomra, hogy ugyan fog-e működni. Megírtam, hibajavítottam, és mostmár úgy működik, ahogy szeretném. Namost, az egész arduinomat nem szeretném beleépíteni.
Lehet-e valahogy az arduinoban megírt kódomat valahogy átfordítani olyan módon, hogy egy önálló ic-n is menjen? Amire gondoltam még, hogy mivel az ic kivehető belőle, és ugyanúgy 328 van benne, beleteszem a másik ict, arra beírom a brogramot, majd az eszközben pedig köré építem a szükséges dolgokat. Működik ez? Mit kell köré építeni?
Előre is köszönök minden segítséget.
(#) icserny válasza mikrokapcsolo hozzászólására (») Júl 17, 2014 /
 
Ha van Arduino kártyád is, akkor azt is használhatod programozóként a másik atmega328 felprogramozására. (Using an Arduino as an AVR ISP) Erre amúgyis rákényszerülsz, ha a másik atmega328-ban nincs eleve bootloader beleégetve (bootloader nélkül hiába dugod át az Arduino kártyába, nem tudod programozni).

Idézet:
„Mit kell köré építeni?”
Nagyjából azt, ami az Arduino Mini kártyán van. Ami esetleg nem kell neked hozzá (Reset gomb, feszültségstabilizátor), az természetesen elhagyható.
(#) mikrokapcsolo válasza icserny hozzászólására (») Júl 17, 2014 /
 
Utánanéztem a YouTube-on is, hogy mégis hogyan működik ez pontosan. A srác egy breadboardon egy külső oszcillátorral és egy resetláb felhúzó ellenállással felépített konfigurációt programozott fel. Tehát, ha megcsinálom a nyákot, ami a végleges eszközöm lesz, az ict breadboardon fel tudom programozni az arduinoval, majd azt visszatéve a panelra, működnie kellene, ugye?
A tervem, hogy az lcd-t, meg a többi ki/bemenetet ugyanoda kötöm, mint most a breadboardon az arduinoval van összekötve, és akkor a másik panelre áttéve ott is oda kötöm őket, és ugyanazt a programot írom bele, mint az arduinoba. Természetesen először a bootloadert égetném bele.
Ez így működhet?
(#) TavIR-AVR válasza mikrokapcsolo hozzászólására (») Júl 18, 2014 /
 
Külső kvarc+kondi, reset körenyéke kell. Bootloader _nem_.
Külső programozóval égeted be a sw-t a chipbe (pl Arduinoisp)
(#) andyka válasza TavIR-AVR hozzászólására (») Júl 18, 2014 /
 
Idézet:
„Külső kvarc+kondi, reset körenyéke kell. Bootloader _nem_.”

Vagyis ha jol ertettem, az "ARDUINO 1.5.7" altal generalt .hex fajlt siman be lehet egetni az IC-be egy akarmilyen IC programozoval (termeszetesen ami tamogatja a kiszemelt ATmega IC-t) ?
A hozzászólás módosítva: Júl 18, 2014
(#) TavIR-AVR válasza andyka hozzászólására (») Júl 18, 2014 /
 
NEM, nem és nem!

BETA szoftverrel NEM dolgozunk _SOHA_, csak ha tesztelők vagyunk.
Arduino 1.0.5 a STABIL, az 1.5.x sorozat _BÉTA_.

Ha van Arduino-d, akkor az ArduinoISP a programozó rá. A HEX égetés _mellett_ persze a fusebiteket is be _kell_ állítani a _bootloader nélküli_ chipnek megfelelően!
(#) mikrokapcsolo válasza TavIR-AVR hozzászólására (») Júl 18, 2014 /
 
A videóban a srác azt mondta, hogy azért kell az arduino bootloaderét beleégetni, mert az a fuse biteket is beállítja olyanra, mint az arduino, vagyis nem kell vele külön foglalkozni, mert a szándékom egy teljesen üres 328-asra ugyanazt a programot, mint amit megírtam arduinora, áttegyem oda.
(#) andyka válasza TavIR-AVR hozzászólására (») Júl 18, 2014 /
 
Idézet:
„BETA szoftverrel NEM dolgozunk _SOHA_”

Megertettem.
Idézet:
„Ha van Arduino-d, akkor az ArduinoISP a programozó rá.”

A gond az hogy a C++ programozo nyelvhez kapisgalok csak es nincs Arduino-m, csak egy ChipKIT UNO32-m es egy Genius G540 egetom, azert kerdeztem ra az Arduino szoftver altal generalt .hex fajl-ra (a "Local Settings / Temp" mappaba).
A videot amirol a srac beszel nem lattam.
(#) mikrokapcsolo válasza andyka hozzászólására (») Júl 18, 2014 /
 
Én erről a videóról beszélek.
(#) TavIR-AVR válasza mikrokapcsolo hozzászólására (») Júl 18, 2014 /
 
Igen. Beszélnek itt-ott nem teljesen komlett/jó dolgokat.
Ha a bootloadsert beégeted, a fusebitekben pl. 2 is hibás:
- bootloader van a chipben és a programfutás a 30kbyte címről kezdődik

Azaz, ha a programod 31k hosszú, akkor NEM fog futni, mert az a 0. címtől kellene. és a 30.k címén ki tudja hogy ami van az program vagy adat. És a kontrollered programként kezdi használni...
Ha meg a programod <30k, akkor a chip a 30kbyte...32kbyte területen lefő FF (NOP, üres) utasításokat hajtja végre, majd a programszámláló _túlcsordul_ és így ér a 0. címre. Minden ez, csak nem _korrekt_ megoldás...

És a TE áramkörödben NEKED kell megmondani pl:
- a chip milyen rendszerfeszültségnél reseteljen (2,7V, 4.3V vagy mindegy/nincs rá szükség)
- mekkora _bekapcsolási, programindulási_ késleltetéssel rendelkezzék,
- a bootloader inicializálása/portkezelési funkciói _nálad a bootloader nélkül_ hiányoznak (pl. memóriaában lehet adat, sorosport inoicializálást a bootloader már elvégez_heti_ a programod _helyett_.

Csak, hogy néhány szempontot mondjak.

A ChipKit-re is felrakható az ArduinoISP, így abból is lehet Arduino/AVR programozó....
(#) mikrokapcsolo válasza TavIR-AVR hozzászólására (») Júl 18, 2014 /
 
Na, most akkor végleg nem tudom, mit csináljak, írjam, vagy ne a bootloadert. A programom alig 5-10k. Vgayis akkor nem fog működni? Vagy csak egy darabig? Ezt nem értem.
(#) icserny válasza mikrokapcsolo hozzászólására (») Júl 18, 2014 /
 
A bootloadert akkor van értelme beégetni, ha a továbbiakban újabb programokat is akarsz rátölteni "Arduino módra" (bootloaderrel a soros porton keresztül). Ha erre nincs szükséged, akkor fölösleges a bootloadert betölteni.

Akár bootloadert töltesz bele, akár nem, a fuse biteket helyesen kell beállítani. Hogy hogyan, azt majd a nálam okosabbak tudják.
(#) mikrokapcsolo válasza icserny hozzászólására (») Júl 18, 2014 /
 
Végülis, a bootloadert is csak azért égettem volna bele, hogy a bizosítékbiteket beírja, mert amiket eddig programoztattam, azoknak előre meg volt adva, hogy mit hova kell állítani, vagy az illettő, akit megkértem, automatikusan beállította. Viszont azt jó lenne tudnom, hogy mit, és hogy állítsak be rajta.
(#) csabeszq válasza mikrokapcsolo hozzászólására (») Júl 19, 2014 /
 
A fuse bitek állítgatásával el tudod tolni a chipet. Én elvből nem segítek benne, mert mindenki a maga felelősségére szórakozik vele.

http://www.engbedded.com/fusecalc/

Ha az elvek érdekelnek, kérdezel, akkor válaszolok, de számot, amit be kell írni semmiképpen nem adok meg.
(#) TavIR-AVR válasza mikrokapcsolo hozzászólására (») Júl 19, 2014 /
 
Fog működni. Viszont ha utánépíted és _nem érdekel hogyan, de működik_ akkor simán égesd a bootloadert. A kód fog működni.
Viszont semmit nem tanulsz belőle.

Ha tanulni szeretnél:
Bootloaderről...
Fusebitek és a háttere
(#) mikrokapcsolo válasza TavIR-AVR hozzászólására (») Júl 19, 2014 /
 
És a "programszámláló túlcsordul". Ezt hogy kell érteni? Mit befolyásol? Szeretném persze tudni, hogy mégis mik a fuse bitek, meg hogy mit tudnak, de egyenlőre maradok a bottloader beégetésénél.
Következő: »»   37 / 851
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem