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   244 / 855
(#) csabeszq válasza elactrofan hozzászólására (») Júl 14, 2016 /
 
Az Atmega88 nem hivatalos Arduino chip, viszont rá lehet buherálni az Arduinot.

Ha mindenképp pepecselni akarsz, akkor:
http://www.morethantechnical.com/2012/04/04/bootloading-an-atmega88...-code/

Megnéztem az Ebay-en:

360 Ft az Atmega88
390 Ft az Atmega328P

Szerintem semmi értelme az Atmega88-at gyötörni, rá kell áldozni a +30 Ft-ot egy Atmega328P-re.
(#) elactrofan válasza csabeszq hozzászólására (») Júl 14, 2016 /
 
Azzal nem is lenne gond de az nincs csupán ez a chipem van kézbe.
(#) elactrofan hozzászólása Júl 14, 2016 /
 
Valaki tudna segíteni, hogyan tudnék arduinoval vivőfrekvenciás négyszögjelet létrehozni?? tsop ir vevőhöz?
(#) (Felhasználó 120038) válasza elactrofan hozzászólására (») Júl 14, 2016 /
 
Tyűűűű!

Király kód lesz, várom a megoldást! Gondolom FM-re gondoltál.

(Keresem, hátha valaki már mgoldotta)
(#) proba válasza elactrofan hozzászólására (») Júl 14, 2016 /
 
arduino ir remote...
pl
(#) david10 válasza csabeszq hozzászólására (») Júl 15, 2016 /
 
Amit te linkeltél, annak hogyan lehet állítani a kimeneti jelszint feszültségét?
Van rajta valamilyen jumper?
(#) Bakman válasza david10 hozzászólására (») Júl 15, 2016 /
 
Az Arduino panel ad egy jelet és ezt erősítheted pl. egy tranzisztorral addig, amíg a LED bírja.
(#) david10 válasza Bakman hozzászólására (») Júl 15, 2016 /
 
Köszönöm a válaszod.
Ebben benne van minden, és nem kell hozza semmilyen külső alkatrész a jelszint alakításhoz?
A 4 dollártól nem megyek csődbe.
(#) Bakman válasza david10 hozzászólására (») Júl 15, 2016 /
 
Elnézést, elnéztem. Azt hittem, hogy az IR távirányítós témában kértél segítséget (jelszint emeléshez).

A modul leírása szerint ezen rajta vannak a jelszint illesztők is, tehát azt külön nem kell megvenned. Ami kérdéses lehet, az a TTL szintű illesztés. 5 V-os rendszerhez nem kell semmi, 3,3 V-os rendszerhez pedig egy ellenállásosztó a modul TTL TX lábára, ami az 5 V-os feszültséget 3,3 V-ra osztja le.

Nem feltétlen ezt keresed, neked 3,3 V-os jelszintre van szükséged, nem RS232 vagy RS485 szintekre.
(#) david10 válasza Bakman hozzászólására (») Júl 15, 2016 /
 
Többet nem érthetetlenkedek, leírom a kérdésem egyszerübben.
Adott ez a modul. Ezen a modulon van RS232, RS485, TTL 5V és 3.3V.
Azért tetszett meg nekem ez a modul, mert egy nyákon rajta van minden, és ha ritkán szükségem lenne az RS485-re, RS232-re, akkor ezzel tudom azokat is hekkelni.
A TTL 3,3V-os jelszintjét a RasPi<-->PC-vel való komunikációjához használnám.
A kérdésem: Ha a jumpereket átállítom 5V TTL-re, akkor azzal tudom programozni a pro minit?
(#) hadhazik hozzászólása Júl 15, 2016 /
 
Submenüs kódnál miért csak soros monitoring után működnek az egyes gombok?[code
  1. #include <UTFT.h>
  2. #include <UTouch.h>
  3. #include <DallasTemperature.h>
  4. #include <OneWire.h>
  5. #define ONE_WIRE_BUS 8
  6. float HLTtemp; //0x28, 0xEE, 0x6D, 0x34, 0x05, 0x00, 0x00, 0xAA
  7. float Mashtemp; //0x28, 0x48, 0x27, 0x35, 0x05, 0x00, 0x00, 0x9F
  8. float Boilertemp; //0x28, 0x25, 0x28, 0x35, 0x05, 0x00, 0x00, 0x79
  9. DeviceAddress HLT = {  
  10.   0x28, 0xEE, 0x6D, 0x34, 0x05, 0x00, 0x00, 0xAA };
  11. DeviceAddress Mash = {  
  12.   0x28, 0x48, 0x27, 0x35, 0x05, 0x00, 0x00, 0x9F };
  13. DeviceAddress Boiler = {
  14.   0x28, 0x25, 0x28, 0x35, 0x05, 0x00, 0x00, 0x79 };
  15.  
  16.   OneWire oneWire(ONE_WIRE_BUS);
  17. DallasTemperature sensors(&oneWire);
  18.  
  19. // Declare which fonts we will be using
  20. extern uint8_t SmallFont[];
  21. extern uint8_t BigFont[];
  22. extern uint8_t SevenSegNumFont[];
  23. extern uint8_t SevenSeg_XXXL_Num[];
  24.  
  25.  
  26. int x, y,g,menu;
  27.  
  28. UTFT          myGLCD(ITDB32S,38,39,40,41);
  29. UTouch        myTouch(6,5,4,3,2);
  30.  
  31.  
  32. void setup()
  33. {
  34.   sensors.begin();
  35.   myGLCD.InitLCD(LANDSCAPE);                   // Initialize the display
  36.   myGLCD.clrScr();                             // Clear the screen (black)
  37.   myTouch.InitTouch(LANDSCAPE);
  38.   myTouch.setPrecision(PREC_MEDIUM);
  39.   myGLCD.setFont(BigFont);
  40.   myGLCD.fillScr(255,255,255);               // Clear the screen (White)
  41.   delay(600);                                 //Delay to draw the image
  42.   myGLCD.clrScr();                            // Clear the screen (black)
  43.   Menu1();
  44.   menu=1;
  45. }
  46.  
  47. void readtemp()
  48. {
  49.   //Call sensors.requestTemperatures() to issure a global temperature
  50.   //request to all devices on the bus
  51.   sensors.requestTemperatures(); //Send the command to get temperatures
  52.   HLTtemp = (sensors.getTempC(HLT));
  53.   Mashtemp = (sensors.getTempC(Mash));
  54.   Boilertemp = (sensors.getTempC(Boiler));
  55. }
  56.  
  57. //Buttons coordinates
  58. //Menu 1
  59. //Button HLT
  60. int x11=20; int y11=20; int x12=150; int y12=100;
  61. //Button Mash
  62. int x21=180; int y21=20; int x22=300; int y22=100;
  63. //Button Boiler
  64. int x31=20; int y31=120; int x32=150; int y32=200;
  65. //Button Menu
  66. int x41=180; int y41=120; int x42=300; int y42=200;
  67. //Button G
  68. int x51=10; int y51=10; int x52=160; int y52=220;
  69. //Button Back
  70. int x61=200; int y61=130; int x62=300; int y62=220;
  71. //Front led
  72. int x71=20; int y71=40; int x72=170; int y72=100;
  73. //Back led
  74. int x81=20; int y81=130; int x82=170; int y82=190;
  75.  
  76. void Menu1()    // MAIN MENU
  77. {
  78.   myGLCD.clrScr(); // Clear the screen (black)
  79.   myGLCD.setFont(BigFont);
  80.   myGLCD.setColor(0, 0, 255);
  81.   myGLCD.setBackColor(0, 0, 255);
  82.   //BUTTON Gpro
  83.   button (x11,y11,x12,y12);  myGLCD.print("HLT",35,50);
  84.   //BUTTON Leds
  85.   button (x21,y21,x22,y22);  myGLCD.print("Mash",210,50);    
  86.   //BUTTON Volto
  87.   button (x31,y31,x32,y32);  myGLCD.print("Boiler",35,150);    
  88.   //BUTTON Spare
  89.   button (x41,y41,x42,y42);  myGLCD.print("Menu",210,150);
  90.  
  91.   menu =1;  
  92.  
  93.  
  94. }
  95.  
  96. void Menu2()    //HLT MENU
  97. {
  98.    myGLCD.clrScr(); // Clear the screen (black)
  99.   myGLCD.print("HLT Temp:", 20, 20);
  100.   myGLCD.setBackColor(0, 0, 255);
  101.   button (x61,y61,x62,y62);   myGLCD.setFont(BigFont);  myGLCD.print("Back",230,200);  
  102.   menu =2;
  103.   myGLCD.printNumF(HLTtemp, 1, 200, 20);
  104. }
  105.  
  106. void Menu3()    //Mash MENU
  107. {
  108.  
  109.   myGLCD.clrScr(); // Clear the screen (black)
  110.   //Front led
  111.   button (x71,y71,x72,y72);
  112.   myGLCD.setFont(BigFont);    myGLCD.print("Front Led",30,70);
  113.   //Back Led
  114.   button (x81,y81,x82,y82);
  115.   myGLCD.setBackColor(0, 0, 255);
  116.   myGLCD.setFont(BigFont);    myGLCD.print("Back Led",30,160);  
  117.   button (x61,y61,x62,y62);   myGLCD.setFont(BigFont);  myGLCD.print("Back",230,200);  
  118.   menu =3;
  119.  
  120. }
  121.  
  122. void Menu4()    // MENU 4
  123. {
  124.  
  125.   myGLCD.clrScr(); // Clear the screen (black)
  126.   myGLCD.setFont(BigFont);    myGLCD.print("Menu 4",30,70);
  127.   button (x61,y61,x62,y62);   myGLCD.setFont(BigFont);  myGLCD.print("Back",230,200);  
  128.   menu =4;
  129.  
  130. }
  131.  
  132. void Menu5()    // MENU 5
  133. {
  134.  
  135.   myGLCD.clrScr(); // Clear the screen (black)
  136.  
  137.   myGLCD.setFont(BigFont);     myGLCD.print("Menu 5",30,70);
  138.   button (x61,y61,x62,y62);   myGLCD.setFont(BigFont);  myGLCD.print("Back",230,200);  
  139.   menu =5;
  140.  
  141. }
  142.  
  143.  
  144.  
  145. void loop()
  146. {
  147.   while (1)
  148.   {
  149.     if (myTouch.dataAvailable())
  150.     {
  151.       myTouch.read();
  152.       x=myTouch.getX();
  153.       y=myTouch.getY();
  154.  
  155.       if (menu ==1)  
  156.       {
  157.         if ((y>=y11) && (y<=y12))  // Upper row
  158.         {      
  159.           if ((x>=x11) && (x<=x12))  // Button: Gpro
  160.           {        
  161.             waitForIt(x11,y11,x12,y12);
  162.             menu =2;
  163.             Menu2();
  164.           }
  165.           if ((x>=x21) && (x<=x22))  // Button: Leds
  166.            {
  167.              waitForIt(x21,y21,x22,y22);
  168.             menu =3;
  169.             Menu3();
  170.            }
  171.         }
  172.         if ((y>=y31) && (y<=y32))  // Lower row
  173.         {    
  174.           if ((x>=x31) && (x<=x32))  // Button: Volto
  175.            {
  176.              waitForIt(x31,y31,x32,y32);
  177.            menu =4;
  178.            Menu4();
  179.            }
  180.           if ((x>=x41) && (x<=x42))  // Button: Spare
  181.            {
  182.              waitForIt(x41,y41,x42,y42);
  183.              menu =5;
  184.              Menu5();
  185.              
  186.            }
  187.         }
  188.       }
  189.  
  190.       if (menu==2)
  191.       {
  192.        
  193.         myGLCD.setFont(BigFont);
  194.               delay(300);
  195.         if ((y>=y61) && (y<=y62))  // Button: Back
  196.         {    
  197.           if ((x>=x61) && (x<=x62))  // Button: Back
  198.           {    
  199.             waitForIt(x61,y61,x62,y62);
  200.             menu =1;
  201.             Menu1();
  202.           }
  203.  
  204.         }
  205.       }
  206.       if (menu==3)
  207.       {
  208.         delay(300);
  209.         if ((y>=y61) && (y<=y62))  // Button: Back
  210.         {    
  211.           if ((x>=x61) && (x<=x62))  // Button: Back
  212.           {    
  213.             waitForIt(x61,y61,x62,y62);
  214.             menu =1;
  215.             Menu1();
  216.           }
  217.  
  218.         }
  219.       }
  220.             if (menu==4)
  221.       {
  222.         if ((y>=y61) && (y<=y62))  // Button: Back
  223.         {    
  224.           if ((x>=x61) && (x<=x62))  // Button: Back
  225.           {    
  226.             waitForIt(x61,y61,x62,y62);
  227.             menu =1;
  228.             Menu1();
  229.           }
  230.  
  231.         }
  232.       }
  233.             if (menu==5)
  234.       {
  235.         if ((y>=y61) && (y<=y62))  // Button: Back
  236.         {    
  237.           if ((x>=x61) && (x<=x62))  // Button: Back
  238.           {    
  239.             waitForIt(x61,y61,x62,y62);
  240.             menu =1;
  241.             Menu1();
  242.           }
  243.  
  244.         }
  245.       }
  246.    
  247.     }
  248.       while (myTouch.dataAvailable())
  249.              ; // wait here until they've lifted their finger
  250. }
  251. }
  252.  
  253.  
  254. void button(int x1, int y1, int x2, int y2)
  255. {
  256.   myGLCD.setColor(0, 0, 255);
  257.   myGLCD.fillRoundRect (x1,y1,x2,y2);
  258.   myGLCD.setColor(255, 255, 255);
  259.   myGLCD.drawRoundRect (x1,y1,x2,y2);
  260. }
  261.  
  262. // Draw a red frame while a button is touched
  263. void waitForIt(int x1, int y1, int x2, int y2)
  264. {
  265.   myGLCD.setColor(255, 0, 0);
  266.   myGLCD.drawRoundRect (x1, y1, x2, y2);
  267.   //while (myTouch.dataAvailable())
  268.   //myTouch.read();
  269.   delay(300);
  270.   myGLCD.setColor(255, 255, 255);
  271.   myGLCD.drawRoundRect (x1, y1, x2, y2);
  272. }
][/code]
(#) (Felhasználó 120038) válasza hadhazik hozzászólására (») Júl 15, 2016 /
 
Véletlenül nem az a gondod, hogy ha beljebb mész a menüben, akkor ha pl a főmenübe lépsz vissza akkor nem jó?
(#) hadhazik válasza (Felhasználó 120038) hozzászólására (») Júl 15, 2016 /
 
A program indítása után a menü megjelenik és nem működnek a menügombok, csak soros monitorozás után.
(#) (Felhasználó 120038) válasza hadhazik hozzászólására (») Júl 15, 2016 /
 
Nem értem pontosan ezt a soros monitorozást. Bocs!
Hol van a kódodban?

Azonban több dolog nem kell bele szerintem. A loop eleve megoldja, hogy mindig fusson, az a dolga. Miért kell bele a while (1)? Nem lehet, hogy ez a feltétel valamiért nem teljesül? (Csak tipp). A Setup-ban lefut a menu1 ezért az megjelenik. A loop-ban a while(1) azonban nem, ezért kivenném ezt a while-t a lezáró karakterrel együtt. (Ha ez a gondja, akkor sem értem miért nem jó, de szerintem ez felesleges oda)

2. Nem értem pontosan, hogy miért kell a menuxy() meghívása után/előtt megadni, hogy menu=xy, holott magában a függvényben meg van adva. Mondjuk ez nem gond, de szerintem nem feltétlenül kell.
(#) icserny válasza david10 hozzászólására (») Júl 15, 2016 /
 
Szerintem egyszerűbb az élet, ha azt veszed, amit eredetileg belinkeltél (FTDI modul).
A hozzászólás módosítva: Júl 15, 2016
(#) csabeszq válasza elactrofan hozzászólására (») Júl 15, 2016 / 1
 
Idézet:
„Azzal nem is lenne gond de az nincs csupán ez a chipem van kézbe.”


Amikor 10 millió darabot legyártasz egy cuccból, akkor számít, ha egyik 30 Ft-tal olcsóbb, mint a másik. Egyedi eszközöknél mindig át kell gondolni, hogy érdemes-e 500 Ft-tal többet kifizetni, mint berakni a jobb IC-t. Az Atmega88-at szerintem megvenni sem kellett volna (bocs).

Én is vettem 5 Atmega48-at, mert az volt a legolcsóbb, minden programot Atmega48-ra írtam.
Azután ahogy írtam a programot, kifogytam a RAM-ból, kifogytam a flash-ből, beraktam egy Atmega328P-t helyette, lehetett átírni a kódot 328P-re...

Valóban az Atmega48 olcsóbb az Atmega328P-nél? Az 5 IC árából, amit jelenleg semmire sem tudok használni, két Arduino nano-t rendelhettem volna. Ráadásul időt is nyertem volna, ha nem Atmega48-cal kezdek szórakozni.
(#) proba válasza david10 hozzászólására (») Júl 15, 2016 /
 
Talán DTR jelet nem látok rajta.Anélkül nem hiszem hogy működik.
(#) david10 válasza icserny hozzászólására (») Júl 15, 2016 /
 
Ok, akkor megveszem azt.
Az RXD-t és TXD-t összekötő jumper gondolom csak dísznek van ott. Jól gondolom?
proba: Ezt fogom megvenni, ezen van mindenféle port.
(#) gerleimarci válasza david10 hozzászólására (») Júl 15, 2016 /
 
Nem látok rajta reset lábat, ezért macerás vele programozni. Manuálisan kell resetelni, amit elég nehéz eltalálni a megfelelő időben.
Szerintem vedd meg az olcsót arduinohoz és a drágábbat a Pi-hez. Szerintem azon a 400Ft-on ne múljon.Bővebben: Link
(#) hadhazik válasza (Felhasználó 120038) hozzászólására (») Júl 15, 2016 /
 
A programozáshoz IDE 1.6.9 verziót használok, az eszközök utolsó gombja :
Soros Monitor: az Arduino panel által küldött soros adatok megjelenítése egy terminálablakban
Na ezt megnyomva és gyorsan az lcd menü gombra bökve indul csak a menü váltás.
(#) icserny válasza david10 hozzászólására (») Júl 16, 2016 /
 
Idézet:
„Az RXD-t és TXD-t összekötő jumper gondolom csak dísznek van ott.”

Arra szolgál, hogy önmagában is ki tudd próbálni a modult. Ha jól működik, akkor a PC-n egy terminal programot indítva (pl. putty.exe) visszatükrözi a begépelt karaktereket. A normális használathoz természetesen le kell venni.
(#) kapu48 válasza hadhazik hozzászólására (») Júl 16, 2016 /
 
A Sorors monitor reseteli a procit.
Tehát csak második indításra indúl biztosan a programod!

Okozhatja, hogy valamelyik külső HW lassan éledfel, és azon elakad az indítás.

Próbálj berakni valamenyi várakozást a setup elejére.

Ezek után:
sensors.begin();
myGLCD.InitLCD(LANDSCAPE);
(#) proba válasza david10 hozzászólására (») Júl 16, 2016 /
 
Én is vettem ilyet, kábel nélkül 2,3$ volt, de szerintem hamis chippes. Régebbi WIN7-en régebbi driverrel működik, újabb 64 bites win7 -re már nem sikerült felraknom.( igaz céges gép volt, nem nagyon akartam benne turkálni)
(#) hadhazik válasza kapu48 hozzászólására (») Júl 16, 2016 /
 
delay(1000);
Serial.begin(9600);
Beszúrása után a program indítható.
A tápfesz lekapcsolása és visszaadása után nem működik csak soros monitor resetelés után.
(#) (Felhasználó 120038) válasza hadhazik hozzászólására (») Júl 16, 2016 /
 
Szia!

Értem! Bocs az értetlenkedésemért!

Nem értettem, hogy miért van soros monitoring (hátha valami extra), mert sehol nem láttam serialprint-et a kódodban.

Ha jól saccolom, akkor a programod tesztelkéséhez nem is nagyon kell, mert van kijelződ. PC-ről leszedve, újraindítva sem megy rendesen? Hátha a soros kommunikáció akad össze az agyában. Sensors.begin(); milyen kommunikációt indít?

Mindent külön tápról menetsz? Azaz ne az Arduino táplálja a kijelzőket és a szenzorokat sem.
(#) hadhazik válasza (Felhasználó 120038) hozzászólására (») Júl 16, 2016 /
 
USB-ről kap tápot, szenzor nincs rákötve, csak a programot tesztelem, lehet ez is hiba.
Külön tápról sem indul a táp elvétele és vissza adása után.
(#) (Felhasználó 120038) válasza hadhazik hozzászólására (») Júl 16, 2016 /
 
Lehet tényleg ez is hiba, nem tudom, nem látom a kört. A onewire lábak ha szabadon lógnak, lehet összeszednek valami zajt.

Ezt kipróbálhatod, ha a kódból azokat a sorokat kiveszed (kikommenteled), amik a szenzorok olvasását oldják meg, még a sensors.begin();-t is. A programod menürendszerének ekkor is mennie kellene, max kiiratsz valami fals értéket vele, mindezt a pc-től külön. Ha így megy akkor a szenzorok hiánya lehet a gond. Ha ekkor sem, akkor más is lehet még a háttérben. Addig, míg nem megy a kiiratás, és a menuben lépegetés, addig mindenképpen vedd ki a szenzorok olvasását, mert előfordulhat, hogy azok hiánya IS és másik hiba is okozza ezt. Nehogy olyanba kerülj bele, hogy kijavítod az egyik hibát, de mégsem megy, mert van másik is, azután visszacsinálod a már kijavítottat, keresed tovább a hibát stb. Én már futottam ilyenbe bele...

Véleményem szerint mindig jobb megoldás, ha ugyanarról a tápról van etetve minden, de külön. Természetesen csak akkor, ha a táp bírja.
(#) (Felhasználó 120038) válasza hadhazik hozzászólására (») Júl 16, 2016 /
 
Látom, hogy sok helyen nem kell kiremelni dolgokat, mert valójában sehol sem használod eddig. (Ha jól láttam)

A setup előttit kellene:
  1. 9.DeviceAddress HLT = {  
  2.  
  3. 10.  0x28, 0xEE, 0x6D, 0x34, 0x05, 0x00, 0x00, 0xAA };
  4.  
  5. 11.DeviceAddress Mash = {  
  6.  
  7. 12.  0x28, 0x48, 0x27, 0x35, 0x05, 0x00, 0x00, 0x9F };
  8.  
  9.  
  10. 13.DeviceAddress Boiler = {
  11.  
  12. 14.  0x28, 0x25, 0x28, 0x35, 0x05, 0x00, 0x00, 0x79 };
  13.  
  14. 16.  OneWire oneWire(ONE_WIRE_BUS);
  15.  
  16. 17.DallasTemperature sensors(&oneWire);


meg a sensors.begin();-t. a setup-ban.

Ha ezzel sem megy akkor máshol lesz a gond, de valami legalább ki lesz zárva.
(#) (Felhasználó 120038) válasza hadhazik hozzászólására (») Júl 16, 2016 /
 
Van még egy tippem, de nem biztos! Ez a loop-on belüli rész utolsó utasítása:

  1. while (myTouch.dataAvailable())
  2.           ; // wait here until they've lifted their finger


Azonban a void waitForIt függvényben nem így haszálták korábban:

  1. 267.  //while (myTouch.dataAvailable())
  2.  
  3.  
  4. 268.  //myTouch.read();
  5. delay(300);


Nem lehet itt a gond? Kipróbáltad, hogy a fentebb általam vitatott while helyett meghívod inkébb a waitforit függvényt? (Persze a '//' -jelek nélkül!)
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Júl 16, 2016 /
 
Vagy ha nem is hívod meg akkor ez while:
  1. // wait here until they've lifted their finger
  2. while (myTouch.dataAvailable())
  3.       {
  4.          myTouch.read();
  5.          5.delay(300);
  6.        }
Következő: »»   244 / 855
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