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   117 / 856
(#) TavIR-AVR válasza andykaaa hozzászólására (») Máj 29, 2015 /
 
A busz kapacitás van megadva. Ha jól emlékszem max 400 pF lehet.
A vezetéknél _NE_ csavart érpár legyen. Én sima telefondrótot használok. Eddig elvittem olyan 40-45 méterre, és erre volt 10-12 érzékelő felfűzve....
Ja és ez távtáplált mód.
(Zavarvédelemere gondolj ill használd az Arduino/iWire library CRC-jét!)


Parazita módon 10-12 méter és max 2 hőmérő. Felhúzóellenállás ekkor 2k2.
(#) atus1981 válasza varttina hozzászólására (») Máj 29, 2015 /
 
Én is 7805-t használok az 5V bemenetre, kiválóan megférnek.
(#) andykaaa válasza TavIR-AVR hozzászólására (») Máj 30, 2015 /
 
„Arduino/iWire library CRC” nem igazan tudom hogy mi ez, de utananezek. Mindenesetre koszonom a vallszt.
(#) taresz hozzászólása Máj 31, 2015 /
 
Sziasztok!

A fórum végigolvasása nélkül lenne egy a hozzáértők számára egyszerű kérdésem. Én sötét vagyok ehhez.
Arduino Pro Minit tudok-e programozni sima USB-TTL adapterrel (3V3,TX,RX,GND,5V), vagy más adapter kell hozzá és ha igen milyen?
Köszi a segítséget!
(#) TavIR-AVR válasza taresz hozzászólására (») Máj 31, 2015 /
 
A DTR hiányzik. Így programozáskor neked kell nyomkodni (jó szinkronban) a reset gombot.

Más adapter. FT232RL-es vagy olyan amin kinn tav a Tx/Rx mellett a DTR láb is.
Például: Bővebben: Link
(#) ALI hozzászólása Jún 1, 2015 /
 
Sziasztok. Olyan gondom lenne, hogy a programban lévő időzítéskor nem fut semmi más. Mi lehet a gond vagy mivel lehetne helyettesíteni ezt az időzítést?


  1. include <max6675.h>
  2. #include <LiquidCrystal.h>
  3. int lcd_key     = 0;
  4. int adc_key_in  = 0;
  5. #define btnRIGHT  0
  6. #define btnUP     1
  7. #define btnDOWN   2
  8. #define btnLEFT   3
  9. #define btnSELECT 4
  10. #define btnNONE   5
  11.  
  12.  
  13. int read_LCD_buttons()
  14. {
  15.  adc_key_in = analogRead(0);    
  16.  
  17.  if (adc_key_in > 1000) return btnNONE;
  18.  
  19.  if (adc_key_in < 50)   return btnRIGHT;  
  20.  if (adc_key_in < 195)  return btnUP;
  21.  if (adc_key_in < 380)  return btnDOWN;
  22.  if (adc_key_in < 555)  return btnLEFT;
  23.  if (adc_key_in < 790)  return btnSELECT;  
  24.  
  25.  
  26.  
  27.  
  28.  return btnNONE;  
  29. }
  30. const int thermoDO = 4;
  31. const int thermoCS = 5;
  32. const int thermoCLK = 6;
  33. const int venti = 3;
  34. const int rele = 2;
  35. unsigned long time;
  36. float homerseklet = 0.00;
  37. float tempMin = 10;  
  38. float tempMax = 40;  
  39. int fanSpeed;
  40. int fanLCD;
  41.  
  42. MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
  43.  
  44. LiquidCrystal lcd(12, 13, 8, 9, 10, 11);
  45.  
  46. void setup() {
  47.  
  48.   pinMode(venti, OUTPUT);
  49.  
  50.   pinMode(rele, OUTPUT);
  51.  
  52.   lcd.begin(16, 2);
  53.  
  54. }
  55.  
  56. void loop() {
  57. lcd_key = read_LCD_buttons();
  58.  switch (lcd_key)              
  59.  {
  60.    case btnUP:
  61.      {
  62.      tempMin++;
  63.      tempMax++;
  64.      break;
  65.    }
  66.    case btnDOWN:
  67.      {
  68.      tempMin--;  
  69.      tempMax--;
  70.      break;
  71.      }
  72.     }
  73.    
  74.   homerseklet = thermocouple.readCelsius();
  75.     if (homerseklet < tempMin) {
  76.     fanSpeed = 0;
  77.     analogWrite(venti, fanSpeed);
  78.       {
  79.       time=millis();
  80.         while(millis() < time+6000) {
  81.           digitalWrite(rele, HIGH);
  82.           }
  83.            time=millis();  
  84.         while(millis() < time+6000) {
  85.           digitalWrite(rele, LOW);
  86.          }
  87.         }
  88.      
  89.   }
  90.  
  91.   else if ((homerseklet >= tempMin) && (homerseklet <= tempMax)) {
  92.     fanSpeed = map(homerseklet, tempMin, tempMax, 0, 255);
  93.     fanLCD = map(homerseklet, tempMin, tempMax, 0, 100);
  94.     analogWrite(venti, fanSpeed);
  95.    
  96.   }
  97.   else {
  98.     fanLCD = 100;
  99.     analogWrite(venti, 255);
  100.     digitalWrite(rele, LOW);
  101.   }
  102.  
  103.   lcd.setCursor(0, 1);
  104.   lcd.print("H2:");
  105.   lcd.print(homerseklet);
  106.   lcd.print("C");
  107.  
  108.   lcd.setCursor(0, 0);
  109.   lcd.print("H1:");
  110.   lcd.print(tempMax);
  111.   lcd.print("C");
  112.  
  113.  
  114.  
  115.   lcd.setCursor(10, 1);
  116.   lcd.print("V:");
  117.   lcd.print(fanLCD);
  118.   lcd.print("%");
  119.   delay(300);
  120.  
  121. }


Kód javítva.
Használd a kód gombot!
-moderátor-
A hozzászólás módosítva: Jún 1, 2015
(#) teglascs válasza TavIR-AVR hozzászólására (») Jún 1, 2015 /
 
- ilyen, sima telefonkábelt? /kép/
- a parazita megtáplálás azt jelenti, hogy van valahol egy plusz betáp a hosszú mérőkábel nagy ellenállása miatt?
- ugyanezen a módon I2C eszközök is használhatók ilyen távolságból?
(#) proba válasza ALI hozzászólására (») Jún 1, 2015 /
 
Az ilyet esetleg úgy csinálnám,a főprogram megy körbe körbe, az időt pedig minden körben vizsgálva, ha túllépte a megadott időt, akkor kimenet kapcsol. Így a kapcsolási idő nem lesz pontos, de legalább mást is tud csinálni.( ha megoldod hogy a főprogramban egy kör pl 10ms akkor minden időzítést ehhez szinkronizálhatsz egyszerű számlálókkal) Vagy van a rögösebb út, a megszakítások használata.
(#) andykaaa válasza teglascs hozzászólására (») Jún 2, 2015 /
 
Csatlakozom en is a kerdesedhez, azzal a pontositassal hogy esetleg a riasztohoz hasznalt kabel ?, az megfelel-e ?
(#) andykaaa válasza ALI hozzászólására (») Jún 2, 2015 /
 
Szerintem „fanSpeed = 0;” ez sincs jo helyen.
Igy minden kor lefutasakor lenullazza a fanSpeed erteket.
(#) teglascs hozzászólása Jún 2, 2015 /
 
Kezdek elkeseredni: DS18B20-szal nem tudtam mérni, akárhogy is próbálkoztam. Talán tényleg gyári hibás volt (vagy én tettem tönkre), oké. Veszek másikat majd.
Most próbálkozom egy DS1621-gyel, de ez sem kényeztet sikerélménnyel: összedugom a rajz szerint Nanoval is, Megával is, rátöltök több, különféle sketchet, de a soros monitor üres marad.
Mi a fenét ronthatok el? Köszönöm.
(#) kapu48 válasza teglascs hozzászólására (») Jún 2, 2015 / 1
 
Eszközkezelőben megnézted melyik COM?-porton van az arduino?
Soros monitort összehangoltad vele COMx, Baud ?
(#) teglascs válasza kapu48 hozzászólására (») Jún 2, 2015 /
 
Igen, a megfelelő COM portok vannak megadva, a bitrate-hez meg nem szoktam nyúlni, hagyom mindig 9600-on.
(#) kapu48 válasza teglascs hozzászólására (») Jún 2, 2015 / 1
 
Tesztelted a monitort?
Pl.:
temp = 25;

Serial.println(temp);

Ír ki valamit?
(#) teglascs válasza kapu48 hozzászólására (») Jún 2, 2015 /
 
A csatolmányt elindítva 1,5 körüli értékeket ír ki. Ezek alapján úgy vélem, működik.
(#) teglascs hozzászólása Jún 2, 2015 /
 
Most összedugtam a Megát egy 24C16 Eeprommal így /csatolmány/.

Ráküldtem ezt a kódot:
  1. #include <Wire.h>
  2.  
  3. void eeprom_i2c_write(byte address, byte from_addr, byte data) {
  4.   Wire.beginTransmission(address);
  5.   Wire.send(from_addr);
  6.   Wire.send(data);
  7.   Wire.endTransmission();
  8. }
  9.  
  10. byte eeprom_i2c_read(int address, int from_addr) {
  11.   Wire.beginTransmission(address);
  12.   Wire.send(from_addr);
  13.   Wire.endTransmission();
  14.  
  15.   Wire.requestFrom(address, 1);
  16.   if(Wire.available())
  17.     return Wire.receive();
  18.   else
  19.     return 0xFF;
  20. }
  21.  
  22. void setup() {
  23.   Wire.begin();
  24.   Serial.begin(9600);
  25.  
  26.   for(int i = 0; i < 10; i++) {
  27.     eeprom_i2c_write(B01010000, i, 'a'+i);
  28.     delay(100);
  29.   }
  30.  
  31.   Serial.println("Writen to memory!");
  32. }
  33.  
  34. void loop() {
  35.   for(int i = 0; i < 10; i++) {
  36.     byte r = eeprom_i2c_read(B01010000, i);
  37.     Serial.print(i);
  38.     Serial.print(" - ");
  39.     Serial.print(r);
  40.     Serial.print("\n");
  41.     delay(1000);
  42.   }
  43. }

És ezt kapom a soros monitoron:
Idézet:
„Writen to memory!
0 - 97
1 - 98
2 - 99
3 - 100
4 - 101
5 - 102
6 - 103
7 - 104
8 - 105
9 - 106
0 - 97
1 - 98
2 - 99
3 - 100
4 - 101
5 - 102”


Ez elvileg így oké?
Ezt kellene kapni eredményként?
(#) ALI válasza andykaaa hozzászólására (») Jún 2, 2015 /
 
Ha ki törlöm belőle akkor is ugyan azt csinálja.
(#) Ati válasza TavIR-AVR hozzászólására (») Jún 2, 2015 /
 
Ez az egyik kód amit találtam és tökéletesen működik.
A másik kód visz a fő oldalra. A kettő összekapcsolása nem megy.
  1. #include <SPI.h>
  2. #include <Ethernet.h>
  3. #include <TextFinder.h>
  4. #include <EEPROM.h>
  5. #include <avr/pgmspace.h>
  6.  
  7. //seting up the EthernetShield
  8. //change the defaults the match your own network
  9. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
  10. byte ip[] = {10,5,1,20};
  11. byte subnet[] = {255,255,255,0};
  12. byte gateway[] = {10,5,1,1};
  13. EthernetServer server(20000);
  14.  
  15. // This is our buffer through which we will will "flow" our HTML code.
  16. // It has to be as big as the longest character chain +1 including the "
  17. char buffer[200];
  18.  
  19. // This is the HTML code all chopped up. The best way to do this is, is by typing
  20. // your HTML code in an editor, counting your characters and divide them by 8.
  21. // you can chop your HTML on every place, but not on the \" parts. So remember,
  22. // you have to use \" instead of simple " within the HTML, or it will not work.
  23.  
  24.  
  25. prog_char htmlx0[] PROGMEM = "<html><title>Ethernet Setup</title><body marginwidth=\"0\" marginheight=\"0\" ";
  26. prog_char htmlx1[] PROGMEM = "leftmargin=\"0\" style=\"margin: 0; padding: 0;\"><table bgcolor=\"#008080\" border";
  27. prog_char htmlx2[] PROGMEM = "=\"0\" width=\"100%\" cellpadding=\"1\" style=\"font-family:Verdana;color:#fff";
  28. prog_char htmlx3[] PROGMEM = "fff;font-size:12px;\"><tr><td>&nbsp  BEÁLLÍTÁS</td></tr></table><br>";
  29. PROGMEM const char *string_table0[] = {htmlx0, htmlx1, htmlx2, htmlx3};
  30.  
  31.  
  32.  
  33. prog_char htmla0[] PROGMEM = "<script>function hex2num (s_hex) {eval(\"var n_num=0X\" + s_hex);return n_num;}";
  34. prog_char htmla1[] PROGMEM = "</script><table><form><input type=\"hidden\" name=\"SBM\" value=\"1\"><tr><td>MAC:";
  35. prog_char htmla2[] PROGMEM = "<input id=\"T1\" type=\"text\" size=\"2\" maxlength=\"2\" name=\"DT1\" value=\"";
  36. prog_char htmla3[] PROGMEM = "\">.<input id=\"T3\" type=\"text\" size=\"2\" maxlength=\"2\" name=\"DT2\" value=\"";
  37. prog_char htmla4[] PROGMEM = "\">.<input id=\"T5\" type=\"text\" size=\"2\" maxlength=\"2\" name=\"DT3\" value=\"";
  38. prog_char htmla5[] PROGMEM = "\">.<input id=\"T7\" type=\"text\" size=\"2\" maxlength=\"2\" name=\"DT4\" value=\"";
  39. prog_char htmla6[] PROGMEM = "\">.<input id=\"T9\" type=\"text\" size=\"2\" maxlength=\"2\" name=\"DT5\" value=\"";
  40. prog_char htmla7[] PROGMEM = "\">.<input id=\"T11\" type=\"text\" size=\"2\" maxlength=\"2\" name=\"DT6\" value=\"";
  41. PROGMEM const char *string_table1[] = {htmla0, htmla1, htmla2, htmla3, htmla4, htmla5, htmla6, htmla7};
  42.  
  43. prog_char htmlb0[] PROGMEM = "\"><input id=\"T2\" type=\"hidden\" name=\"DT1\"><input id=\"T4\" type=\"hidden\" name=\"DT2";
  44. prog_char htmlb1[] PROGMEM = "\"><input id=\"T6\" type=\"hidden\" name=\"DT3\"><input id=\"T8\" type=\"hidden\" name=\"DT4";
  45. prog_char htmlb2[] PROGMEM = "\"><input id=\"T10\" type=\"hidden\" name=\"DT5\"><input id=\"T12\" type=\"hidden\" name=\"D";
  46. prog_char htmlb3[] PROGMEM = "T6\"></td></tr><tr><td>IP: <input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT7\" value=\"";
  47. prog_char htmlb4[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT8\" value=\"";
  48. prog_char htmlb5[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT9\" value=\"";
  49. prog_char htmlb6[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT10\" value=\"";
  50. PROGMEM const char *string_table2[] = {htmlb0, htmlb1, htmlb2, htmlb3, htmlb4, htmlb5, htmlb6};
  51.  
  52. prog_char htmlc0[] PROGMEM = "\"></td></tr><tr><td>MASK: <input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT11\" value=\"";
  53. prog_char htmlc1[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT12\" value=\"";
  54. prog_char htmlc2[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT13\" value=\"";
  55. prog_char htmlc3[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT14\" value=\"";
  56. PROGMEM const char *string_table3[] = {htmlc0, htmlc1, htmlc2, htmlc3};
  57.  
  58. prog_char htmld0[] PROGMEM = "\"></td></tr><tr><td>GW: <input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT15\" value=\"";
  59. prog_char htmld1[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT16\" value=\"";
  60. prog_char htmld2[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT17\" value=\"";
  61. prog_char htmld3[] PROGMEM = "\">.<input type=\"text\" size=\"3\" maxlength=\"3\" name=\"DT18\" value=\"";
  62. prog_char htmld4[] PROGMEM = "\"></td></tr><tr><td><br></td></tr><tr><td><input id=\"button1\"type=\"submit\" value=\"MENTÉS\" ";
  63. prog_char htmld5[] PROGMEM = "></td></tr></form></table></body></html>";
  64. PROGMEM const char *string_table4[] = {htmld0, htmld1, htmld2, htmld3, htmld4, htmld5};
  65.  
  66. prog_char htmle0[] PROGMEM = "Onclick=\"document.getElementById('T2').value ";
  67. prog_char htmle1[] PROGMEM = "= hex2num(document.getElementById('T1').value);";
  68. prog_char htmle2[] PROGMEM = "document.getElementById('T4').value = hex2num(document.getElementById('T3').value);";
  69. prog_char htmle3[] PROGMEM = "document.getElementById('T6').value = hex2num(document.getElementById('T5').value);";
  70. prog_char htmle4[] PROGMEM = "document.getElementById('T8').value = hex2num(document.getElementById('T7').value);";
  71. prog_char htmle5[] PROGMEM = "document.getElementById('T10').value = hex2num(document.getElementById('T9').value);";
  72. prog_char htmle6[] PROGMEM = "document.getElementById('T12').value = hex2num(document.getElementById('T11').value);\"";
  73. PROGMEM const char *string_table5[] = {htmle0, htmle1, htmle2, htmle3, htmle4, htmle5, htmle6};
  74.  
  75. const byte ID = 0x92; //used to identify if valid data in EEPROM the "know" bit,
  76. // if this is written in EEPROM the sketch has ran before
  77. // We use this, so that the very first time you'll run this sketch it will use
  78. // the values written above.
  79. // defining which EEPROM address we are using for what data
  80.  
  81. void setup()
  82. {
  83.   ShieldSetup (); //Setup the Ethernet shield
  84.   server.begin(); //starting the server
  85. }
  86.  
  87. void ShieldSetup()
  88. {
  89.   int idcheck = EEPROM.read(0);
  90.   if (idcheck != ID){
  91.     //ifcheck id is not the value as const byte ID,
  92.     //it means this sketch has NOT been used to setup the shield before
  93.     //just use the values written in the beginning of the sketch
  94.   }
  95.   if (idcheck == ID){
  96.     //if id is the same value as const byte ID,
  97.     //it means this sketch has been used to setup the shield.
  98.     //So we will read the values out of EERPOM ans use them
  99.     //to setup the shield.
  100.     for (int i = 0; i < 6; i++){
  101.       mac[i] = EEPROM.read(i+1);
  102.     }
  103.     for (int i = 0; i < 4; i++){
  104.       ip[i] = EEPROM.read(i+7);
  105.     }
  106.     for (int i = 0; i < 4; i++){
  107.       subnet[i] = EEPROM.read(i+11);
  108.     }
  109.     for (int i = 0; i < 4; i++){
  110.       gateway[i] = EEPROM.read(i+15);
  111.     }
  112.   }
  113.   Ethernet.begin(mac, ip, gateway, subnet);
  114. }
  115.  
  116. void loop()
  117. {
  118.   EthernetClient client = server.available();
  119.   if (client) {
  120.     TextFinder  finder(client );
  121.     while (client.connected()) {      
  122.       if (client.available()) {
  123.         //This part does all the text searching
  124.         if( finder.find("GET /") ) {
  125.           // if you find the word "setup" continue looking for more
  126.           // if you don't find that word, stop looking and go further
  127.           // This way you can put your own webpage later on in the sketch
  128.           if (finder.findUntil("setup", "\n\r")){
  129.             // if you find the word "SBM" continue looking for more
  130.             // if you don't find that word, stop looking and go further
  131.             // it means the SUBMIT button hasn't been pressed an nothing has
  132.             // been submitted. Just go to the place where the setup page is
  133.             // been build and show it in the client's browser.
  134.           if (finder.findUntil("SBM", "\n\r")){
  135.             byte SET = finder.getValue();
  136.             // Now while you are looking for the letters "DT", you'll have to remember
  137.             // every number behind "DT" and put them in "val" and while doing so, check
  138.             // for the according values and put those in mac, ip, subnet and gateway.
  139.               while(finder.findUntil("DT", "\n\r")){
  140.                 int val = finder.getValue();
  141.                 // if val from "DT" is between 1 and 6 the according value must be a MAC value.
  142.                 if(val >= 1 && val <= 6) {
  143.                   mac[val - 1] = finder.getValue();
  144.                 }
  145.                 // if val from "DT" is between 7 and 10 the according value must be a IP value.
  146.                 if(val >= 7 && val <= 10) {
  147.                   ip[val - 7] = finder.getValue();
  148.                 }
  149.                 // if val from "DT" is between 11 and 14 the according value must be a MASK value.
  150.                 if(val >= 11 && val <= 14) {
  151.                   subnet[val - 11] = finder.getValue();
  152.                 }
  153.                 // if val from "DT" is between 15 and 18 the according value must be a GW value.
  154.                 if(val >= 15 && val <= 18) {
  155.                   gateway[val - 15] = finder.getValue();
  156.                 }
  157.               }
  158.             // Now that we got all the data, we can save it to EEPROM
  159.             for (int i = 0 ; i < 6; i++){
  160.               EEPROM.write(i + 1,mac[i]);
  161.             }
  162.             for (int i = 0 ; i < 4; i++){
  163.               EEPROM.write(i + 7, ip[i]);
  164.             }
  165.             for (int i = 0 ; i < 4; i++){
  166.               EEPROM.write(i + 11, subnet[i]);
  167.             }
  168.             for (int i = 0 ; i < 4; i++){
  169.               EEPROM.write(i + 15, gateway[i]);
  170.             }
  171.             // set ID to the known bit, so when you reset the Arduino is will use the EEPROM values
  172.             EEPROM.write(0, 0x92);
  173.             // if al the data has been written to EEPROM we should reset the arduino
  174.             // for now you'll have to use the hardware reset button
  175.           }
  176.           // and from this point on, we can start building our setup page
  177.           // and show it in the client's browser.
  178.           client.println("HTTP/1.1 200 OK");
  179.           client.println("Content-Type: text/html");
  180.           client.println();
  181.           for (int i = 0; i < 4; i++)
  182.             {
  183.             strcpy_P(buffer, (char*)pgm_read_word(&(string_table0[i])));
  184.             client.print( buffer );
  185.             }
  186.           for (int i = 0; i < 3; i++)
  187.             {
  188.             strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[i])));
  189.             client.print( buffer );
  190.             }
  191.           client.print(mac[0],HEX);
  192.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[3])));
  193.           client.print( buffer );
  194.           client.print(mac[1],HEX);
  195.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[4])));
  196.           client.print( buffer );
  197.           client.print(mac[2],HEX);
  198.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[5])));
  199.           client.print( buffer );
  200.           client.print(mac[3],HEX);
  201.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[6])));
  202.           client.print( buffer );
  203.           client.print(mac[4],HEX);
  204.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[7])));
  205.           client.print( buffer );
  206.           client.print(mac[5],HEX);
  207.           for (int i = 0; i < 4; i++)
  208.             {
  209.             strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[i])));
  210.             client.print( buffer );
  211.             }
  212.           client.print(ip[0],DEC);
  213.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[4])));
  214.           client.print( buffer );
  215.           client.print(ip[1],DEC);
  216.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[5])));
  217.           client.print( buffer );
  218.           client.print(ip[2],DEC);
  219.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[6])));
  220.           client.print( buffer );
  221.           client.print(ip[3],DEC);
  222.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[0])));
  223.           client.print( buffer );
  224.           client.print(subnet[0],DEC);
  225.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[1])));
  226.           client.print( buffer );
  227.           client.print(subnet[1],DEC);
  228.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[2])));
  229.           client.print( buffer );
  230.           client.print(subnet[2],DEC);
  231.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[3])));
  232.           client.print( buffer );
  233.           client.print(subnet[3],DEC);
  234.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[0])));
  235.           client.print( buffer );
  236.           client.print(gateway[0],DEC);
  237.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[1])));
  238.           client.print( buffer );
  239.           client.print(gateway[1],DEC);
  240.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[2])));
  241.           client.print( buffer );
  242.           client.print(gateway[2],DEC);
  243.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[3])));
  244.           client.print( buffer );
  245.           client.print(gateway[3],DEC);
  246.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[4])));
  247.           client.print( buffer );
  248.           for (int i = 0; i < 7; i++)
  249.             {
  250.             strcpy_P(buffer, (char*)pgm_read_word(&(string_table5[i])));
  251.             client.print( buffer );
  252.             }
  253.           strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[5])));
  254.           client.print( buffer );
  255.           break;
  256.       }}
  257.         client.println("HTTP/1.1 200 OK");
  258.         client.println("Content-Type: text/html");
  259.         client.println();
  260.         // put your own html from here on
  261.         client.print("IT WORKS: go to ");
  262.         client.print(ip[0],DEC);
  263.         for (int i= 1; i < 4; i++){
  264.           client.print(".");
  265.           client.print(ip[i],DEC);
  266.           }
  267.         client.print("/setup");
  268.         // put your own html until here
  269.         break;  
  270.         }
  271.       }
  272.     delay(1);
  273.     client.stop();
  274.   }
  275. }
(#) teglascs válasza Ati hozzászólására (») Jún 2, 2015 /
 
Ebben esetleg nincs olyan infó, ami segít?
(#) saua hozzászólása Jún 3, 2015 /
 
  1. #include <SPI.h>
  2. #include <Ethernet.h>
  3. #include <OneWire.h>  
  4. #include <DallasTemperature.h>
  5.  
  6. #define TEMPERATURE_INDOOR 5   //DS18B20 pin 5
  7.    
  8. const int ledPin = 9;
  9. byte mac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // aktualizalni
  10. byte ip[] = { xxx, xxx, xxx, xxx };  // aktualizalni
  11.    
  12. OneWire oneWireIndoor(TEMPERATURE_INDOOR);
  13. DallasTemperature sensorIndoor(&oneWireIndoor);  
  14.    
  15. EthernetServer server(80);
  16.  
  17. void setup() {
  18.  
  19.         pinMode(ledPin, OUTPUT);
  20.         digitalWrite(ledPin, HIGH);
  21.         sensorIndoor.begin();  
  22.  
  23.         Ethernet.begin(mac, ip);
  24. }
  25.    
  26. void loop() {
  27.         float temperatureIndoor;
  28.         EthernetClient client = server.available();
  29.         if (client) {
  30.                 boolean currentLineIsBlank = true;
  31.                                 while (client.connected()) {
  32.                                         if (client.available()) {
  33.                                         char c = client.read();
  34.                                 if (c == '\n' && currentLineIsBlank) {
  35.                                         client.println("HTTP/1.1 200 OK");
  36.                                         client.println("Content-Type: text/html");
  37.                                         client.println("Server: Arduino");
  38.                                         client.println("Connnection: close");
  39.                                         client.println();
  40.                                         temperatureIndoor = readTemperatureCelsius(sensorIndoor);
  41.                                         client.print("temperature:  ");
  42.                                         client.print(temperatureIndoor);
  43.                                         client.print("°C");
  44.                                         client.println();
  45.                                         break;
  46.                                 }
  47.                                  
  48.                                 if (c == '\n') currentLineIsBlank = true;
  49.                                 else if (c != '\r') currentLineIsBlank = false;
  50.                         }
  51.                 }
  52.                  
  53.                 delay(1);
  54.                 client.stop();
  55.                 blinkLED();
  56.         }
  57.  
  58. }
  59.  
  60. float readTemperatureCelsius(DallasTemperature sensor) {
  61.  
  62.         sensor.requestTemperatures();
  63.         float temperature = sensor.getTempCByIndex(0);  
  64.         return temperature;
  65. }
  66.  
  67. void blinkLED() {
  68.  
  69.         digitalWrite(ledPin, HIGH);
  70.         delay(500);
  71.         digitalWrite(ledPin, LOW);
  72.         delay(500);
  73.         return;
  74. }


Sziasztok,

A mellékelt kóddal hogy lehet megoldani, hogy a weboldal automatikusan frissüljön?
Esetleg ha tudtok linket ahol a hőmérséklet kiolvasása DS18B20 –as szenzorral és AJAX technikával van megoldva (tehát nem az egész oldal frissül, hanem csak az adat), előre is köszi.
(#) teglascs válasza saua hozzászólására (») Jún 3, 2015 /
 
Szia, nyisd meg a linket az előző hozzászólásomban: ott foglalkoznak az AJAX-szal.
(#) saua válasza teglascs hozzászólására (») Jún 3, 2015 /
 
Köszi, ott már keresgéltem. Analóg adatokat sikerült kiolvsni, de a szenzor által adott érékkel már nem boldogulok, kész megoldást meg nem találtam.
(#) teglascs válasza saua hozzászólására (») Jún 3, 2015 /
 
Értem. Sajnos ilyen szinten én még nem értek ehhez (de ez a témakör érdekel engem is).
(#) saua válasza teglascs hozzászólására (») Jún 3, 2015 /
 
közben megtaláltam a megoldást a weboldal automatikus frissítésére, a 38. és 39. sor közzé csak ennyit kell beírni:
client.println("Refresh: 5"); // 5 mp-ként frissít

példa analóg bemenet használatával, az oldalról amit linkeltél:
Bővebben: Link
A hozzászólás módosítva: Jún 3, 2015
(#) teglascs válasza saua hozzászólására (») Jún 3, 2015 /
 
szuper, megnézen én is!
(#) ALI válasza ALI hozzászólására (») Jún 3, 2015 /
 
Nincs valakinek ötlete mi lehet a gond?
(#) minimodel hozzászólása Jún 4, 2015 /
 
Sziasztok! Végre hozzájutottam egy 2x16-os LCD-hez. El szeretném végezni vele a gyakorlatokat, de sajnos nem írt ki semmit. Példaképp nektek összeraktam a kommunikáció nélküli áramkört és a 10k-s potit direkt úgy állítottam be, hogy a hibát látni lehessen. Amikor a kontrasztot állítom, egyszerre csak a kijelző kb. fele változik. A másik fele késéssel követi.

Arra gondoltam lehet emiatt nem ír ki semmit az Arduino mert lehet maga az LCD a hibás. Egy kis boltban vettem, poros is volt, lehet elfekvő készlet volt.

Kipróbáltam másik potival is, illetve más helyre dugtam a panelen az LCD-t de az eredmény ugyanaz. Természetesen a kódban a lábkiosztás és címzés is stimmel és ennek ellenére nem ír ki semmit. Szerintetek mi lehet a baj?

lcd.jpg
    
(#) proba válasza minimodel hozzászólására (») Jún 4, 2015 /
 
Ha az lcd init részében nem jó sor/oszlopszámot írsz akkor csinál ilyet. Próbálkozz 8,4 vagy egyéb más beállítással.
(#) kapu48 válasza ALI hozzászólására (») Jún 4, 2015 /
 
Mit szólsz ehhez a villogóhoz?:
  1. // Blink LED
  2. // ...
  3. boolean blinkled = 0
  4. unsigned int time = millis() + 6000;
  5.  
  6. void loop() {
  7.  
  8.  // ...
  9.    switch (blinkled)              
  10.    {
  11.      case 0:
  12.      {
  13.         if (millis() < time) {
  14.           digitalWrite(rele, HIGH);
  15.           }else{
  16.            time=millis() + 6000;  
  17.            blinkled = 1;
  18.           }
  19.        break;
  20.      }
  21.      case 1:
  22.      {
  23.         if (millis() < time) {
  24.           digitalWrite(rele, LOW);
  25.           }else{
  26.            time=millis() + 6000;  
  27.            blinkled = 0;
  28.           }    
  29.         break;
  30.      }
  31.     }
  32.  // ...  
  33. }
(#) kapu48 válasza kapu48 hozzászólására (») Jún 4, 2015 /
 
Vagy ez még jobb:
  1. // Blink LED
  2. // ...
  3. boolean blinkl = 0
  4. unsigned int time = millis() + 6000;
  5. digitalWrite(rele, HIGH);
  6.  
  7. void loop() {
  8.  
  9.  // ...
  10.    switch (blinkl)              
  11.    {
  12.      case 0:
  13.      {
  14.         if (millis() > time) {
  15.            digitalWrite(rele, LOW);        
  16.            time=millis() + 6000;  
  17.            blinkl = 1;
  18.           }
  19.        break;
  20.      }
  21.      case 1:
  22.      {
  23.         if (millis() > time) {
  24.            digitalWrite(rele, HIGH);
  25.            time=millis() + 6000;  
  26.            blinkl = 0;
  27.           }    
  28.         break;
  29.      }
  30.     }
  31.  // ...  
  32. }

Csak 1* állítja be a kimenetet!
Rövidebb és gyorsabb!
A hozzászólás módosítva: Jún 4, 2015
Következő: »»   117 / 856
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