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   301 / 867
(#) kegyetlen19 válasza kegyetlen19 hozzászólására (») Dec 10, 2016 /
 
Nos, meglett a hiba miért nem akart az „if-es összehasonlítási feltétel” nekem jó lenni. Banális hibát vétettem és csak most vettem észre, hogy felcseréltem az összehasonlítási irányt. Nem mindegy, hogy x > y, vagy x < y.
Valakinek, esetleg még hozzászólása a kérdésemre?
(#) Panhard válasza kegyetlen19 hozzászólására (») Dec 10, 2016 / 1
 
Így:?
  1. const byte ledPin = 9;  //led pwm kimenet
  2. const byte interruptPin = 2;    //nyomógomb bemenet
  3. int millisec = 50;   //milyen gyorsan változtassa a fényerőt
  4. int gomb_delay = 1000;    //mennyi ideig kell nyomvatartani
  5.  
  6. bool gomb_nyomva;
  7. unsigned long millis_gomb;
  8. unsigned long temp_millis;
  9. unsigned long temp_millis_elozo;
  10. int ledpwm;
  11. bool novel;
  12. bool csokkent;
  13.  
  14. //****************************************************************
  15. void setup() {
  16.     Serial.begin(115200);
  17.     pinMode(interruptPin, INPUT_PULLUP);
  18.     attachInterrupt(digitalPinToInterrupt(interruptPin), gomb, CHANGE);
  19. }
  20. //****************************************************************
  21. void loop(){
  22.   temp_millis = millis();
  23.   if(temp_millis>temp_millis_elozo+millisec){
  24.                             temp_millis_elozo=temp_millis; idozites();}  
  25.  
  26.     if(ledpwm>255)ledpwm=255;
  27.     if(ledpwm<0)ledpwm=0;
  28.  
  29.     if(ledpwm==255)novel=false;
  30.     if(ledpwm==0)csokkent=false;
  31. }
  32. //****************************************************************
  33. void idozites(){
  34.  
  35.   if(gomb_nyomva && (millis()-millis_gomb) > gomb_delay){
  36.       novel = false;
  37.       csokkent = false;
  38.       if(ledpwm<255){ledpwm++;}  
  39.       }
  40.  
  41.   if(novel){if(ledpwm<255){ledpwm++;}}
  42.   if(csokkent){if(ledpwm>0){ledpwm--;}}
  43.  
  44.     analogWrite(ledPin,ledpwm);
  45.     Serial.print("pwm=");
  46.     Serial.println(ledpwm);
  47. }
  48. //****************************************************************
  49. void gomb(){
  50.  
  51.       if(!digitalRead(interruptPin)){    
  52.         millis_gomb = millis();
  53.         gomb_nyomva = true;
  54.        }
  55.  
  56.       if(digitalRead(interruptPin)){      
  57.         gomb_nyomva = false;
  58.        
  59.         if((millis()-millis_gomb)<gomb_delay){
  60.            
  61.               if(ledpwm == 0){novel = true;}
  62.               if(ledpwm == 255){csokkent = true;}
  63.               if(ledpwm<255 && ledpwm>0){csokkent = true; novel = false;}  
  64.             }
  65.         }
  66. }
:
A hozzászólás módosítva: Dec 10, 2016
(#) kegyetlen19 válasza Panhard hozzászólására (») Dec 11, 2016 /
 
Köszi.
Kipróbálom. És próbálom megérteni. Majd jelentkezem.
(#) Panhard válasza jeges hozzászólására (») Dec 11, 2016 /
 
Szia. De igen, szerintem sokan használjuk. Én személyszerint a kérdésedet sem értem, leírhatnád kicsit konkrétabban. Egyébként miért nem egy adatbázisba töltöd fel ezeket az adatokat, onnan korábbi adatokat is letudnál kérni. Nem csak az online adatokat látnád.
(#) jeges válasza Panhard hozzászólására (») Dec 11, 2016 /
 
Szia!
Ezt igy müködik de TCP valahogy nem mennek át ki küldött értékek Realterm nem elérhetö TCP port ping sem !
HTTP alatt böngészöben is megjelenek az el küldött értékek szépen!
TCP alatt mi a titok?

  1. #include <ESP8266WiFi.h>
  2. #include <SDM.h>                                                                //import SDM template library
  3.  
  4. #define ASCII_ESC 27
  5.  
  6. char bufout[10];
  7.  
  8.  
  9. SDM<> sdm;
  10.  
  11.  
  12. const char* ssid     = "TP-LINK";
  13. const char* password = "1234567";
  14.  
  15.  
  16.  
  17. // Web Server on port 80
  18. WiFiServer server(80);
  19.  
  20. // only runs once on boot
  21. void setup() {
  22.   // Initializing serial port for debugging purposes
  23.   Serial.begin(115200);
  24.   delay(10);
  25.  sdm.begin();
  26.  
  27.   // Connecting to WiFi network
  28.   Serial.println();
  29.   Serial.print("Connecting to ");
  30.   Serial.println(ssid);
  31.  
  32.   WiFi.begin(ssid, password);
  33.  
  34.   while (WiFi.status() != WL_CONNECTED) {
  35.     delay(500);
  36.     Serial.print(".");
  37.   }
  38.   Serial.println("");
  39.   Serial.println("WiFi connected");
  40.  
  41.   // Starting the web server
  42.   server.begin();
  43.   Serial.println("Web server running. Waiting for the ESP IP...");
  44.   delay(2000);
  45.  
  46.   // Printing the ESP IP address
  47.   Serial.println(WiFi.localIP());
  48. }
  49.  
  50.  
  51.  
  52. // runs over and over again
  53. void loop() {
  54.   // Listenning for new clients
  55.   WiFiClient client = server.available();
  56.  
  57.   if (client) {
  58.     Serial.println("New client");
  59.     // bolean to locate when the http request ends
  60.     boolean blank_line = true;
  61.     while (client.connected()) {
  62.       if (client.available()) {
  63.         char c = client.read();
  64.        
  65.         if (c == '\n' && blank_line) {
  66.            Serial.print("Voltage:   ");
  67.   Serial.print(sdm.readVal(SDM120C_VOLTAGE), 2);                                //display voltage
  68.   Serial.println("V");
  69.   Serial.println("-------------------");
  70.  delay(50);
  71.    
  72.    client.print("Voltage:   ");
  73.   client.print(sdm.readVal(SDM120C_VOLTAGE), 2);                              
  74.   client.println("V");
  75.   client.println("-------------------");
  76.  delay(50);
  77.   client.print("Current:   ");
  78.   client.print(sdm.readVal(SDM120C_CURRENT), 2);                                
  79.   client.println("A");
  80.   client.println("-------------------");
  81.  delay(50);
  82.  client.print("Power:     ");
  83.   client.print(sdm.readVal(SDM120C_POWER), 2);                                
  84.   client.println("W");
  85.  client.println("-------------------");
  86.  delay(50);
  87.   client.print("Active power:     ");
  88.   client.print(sdm.readVal(SDM120C_ACTIVE_APPARENT_POWER), 2);                                
  89.   client.println("VA");
  90.  client.println("-------------------");
  91.  delay(50);
  92.   client.print("Apparent power: ");
  93.   client.print(sdm.readVal(SDM120C_REACTIVE_APPARENT_POWER), 2);                              
  94.   client.println("VAr");  
  95. client.println("-------------------");
  96. delay(50);
  97.  
  98. client.print("Power factor:   ");
  99.   client.print(sdm.readVal(SDM120C_POWER_FACTOR), 2);                              
  100.   client.println("Cos");
  101.   client.println("-------------------");
  102. delay(50);
  103.  
  104. client.print("Frequency:   ");
  105.   client.print(sdm.readVal(SDM120C_FREQUENCY), 2);                              
  106.   client.println("Hz");
  107.   client.println("-------------------");
  108. delay(50);
  109.  
  110. client.print("Import active energy :   ");
  111.   client.print(sdm.readVal(SDM120C_IMPORT_ACTIVE_ENERGY), 2);                              
  112.   client.println("KWh");
  113.   client.println("-------------------");
  114. delay(50);
  115.  
  116. client.print("Export active energy:   ");
  117.   client.print(sdm.readVal(SDM120C_EXPORT_ACTIVE_ENERGY), 2);                              
  118.   client.println("KWh");
  119.   client.println("-------------------");
  120. delay(50);
  121.  
  122.   client.print("Total active energy:   ");
  123.   client.print(sdm.readVal(SDM120C_TOTAL_ACTIVE_ENERGY), 2);                              
  124.   client.println("KWh");
  125.   client.println("-------------------");
  126. delay(50);  
  127.            
  128.             break;
  129.         }
  130.         if (c == '\n') {
  131.           // when starts reading a new line
  132.           blank_line = true;
  133.         }
  134.         else if (c != '\r') {
  135.           // when finds a character on the current line
  136.           blank_line = false;
  137.         }
  138.       }
  139.     }  
  140.     // closing the client connection
  141.     delay(1);
  142.     client.stop();
  143.     Serial.println("Client disconnected.");
  144.   }
  145. }
A hozzászólás módosítva: Dec 11, 2016
(#) kegyetlen19 válasza Panhard hozzászólására (») Dec 11, 2016 /
 
Helló.
Köszönöm, hogy egy kész programot írtál. Sajnos még nem sok időm volt a tanulmányozására, megértésére időhiány miatt, (de ami késik, nem múlik).
Viszont a kíváncsiság hajtott és kipróbáltam. Az első hozzászólásomban felvázolt „feladatokat” tökéletesen végrehajtsa. (Majd a fényerő változás sebességét kell megvariálnom, mert a felfele és a lefele szabályozás sebessége nem egyforma lesz).
Egy problémát találtam, az pedig a nyomógomb (és főként a jelenség az Infravörös akadály elkerülési modullal jelentkezik) pergésmentesítése. Időként „műveleteket ugrik” át.
Ebben viszont újból kérnék egy kis segítséget, mert fogalmam sincs, hogy kezdjek neki.
(#) Panhard válasza kegyetlen19 hozzászólására (») Dec 11, 2016 /
 
Pergésmentesítéshez köss a bemenet és a GND közé egy 100nF-os vagy 1µF-os kondit.
(#) Bakman válasza jeges hozzászólására (») Dec 11, 2016 /
 
Tulajdonképpen mi a kérdés? http működik, TCP nem? Ez hogy lehet? A modul TCP vagy UDP kapcsolatot tud kezelni.
(#) elektroby válasza elektroby hozzászólására (») Dec 11, 2016 /
 
Leszedtem a régit (1.612-t) és feltettem az új, 1.6.13-at de a hiba maradt.

Továbbra is:
Idézet:
„open NUL: A rendszer nem találja a megadott fájlt.”

Valakinek valami javaslata?
(#) jeges válasza Bakman hozzászólására (») Dec 11, 2016 /
 
Ahogy irod " http működik, TCP nem"!
Probálom a port számokat is de nem megy TCP!
A hozzászólás módosítva: Dec 11, 2016
(#) Bakman válasza jeges hozzászólására (») Dec 11, 2016 /
 
Ha nem működik a TCP, nem működik a HTTP sem, mivel az utóbbi az előbbire "épül".
(#) jeges válasza Bakman hozzászólására (») Dec 11, 2016 /
 
Böngészöbe ok látható is a képen!

Akkor nem tudom....
(#) Gabó válasza elektroby hozzászólására (») Dec 11, 2016 /
 
Próbáld az 1,5,7el. Én is futottam bele olyanba, hogy az 1,5,7be írt program jó, de ha 1,6,x el akartam feltenni hiba.
(#) Bakman válasza jeges hozzászólására (») Dec 11, 2016 /
 
A kép szerint működik a HTTP és a TCP is. Te nem tudod, mit szeretnél.
(#) jeges válasza Bakman hozzászólására (») Dec 11, 2016 /
 
Vagy cseréljek filmware az espn?

nodemcu hol lehet meg bizható filmwaret találni ami jó is?
(#) jeges válasza Bakman hozzászólására (») Dec 11, 2016 /
 
Én tudom mit szeretnék Tcp portra kiküldeni a látható adatokat amiket késöbb SADA.. HMI rendszeren megtudok majd grafikusan jeleniteni!
(#) Bakman válasza jeges hozzászólására (») Dec 11, 2016 /
 
Mondom, hogy nem tudod, mit szeretnél. TCP protokollon kérdezel a modultol, az meg válaszol rá. Ezt láthatod a böngészőben. Leegyszerűsítve, a TCP protokoll mindig kérdéssel kezdődik. A mester kér a szolgától adatot. A böngésző a mester, az ESP modul a szolga.
A hozzászólás módosítva: Dec 11, 2016
(#) jeges válasza Bakman hozzászólására (») Dec 11, 2016 /
 
Mivel az esp most cliens modban van mást nagyon nem is tudna csak kérdezni lehet töle....
Ezt én is átt látom....
Én még azt látom hogy valami nem megfelelö port szám nem ok a kapcsolathoz win alat TCP hez!
(#) atus1981 válasza Panhard hozzászólására (») Dec 12, 2016 /
 
Megoldható a hardveres Rx-Tx port, viszont azt nem tudom, hogy belefér-e a jelenlegi program mellé az ESP programja a mikrovezérlőbe. Olvastam olyat is, hogy van olyan ESP, amire lehet arduino programot tölteni.
Köszi a segítséget.
(#) icserny válasza atus1981 hozzászólására (») Dec 12, 2016 /
 
Idézet:
„Olvastam olyat is, hogy van olyan ESP, amire lehet arduino programot tölteni.”
Pontosabban: van olyan Arduino IDE (bővítmény), ami az ESP8266-ot támogatja. Bővebben: Link
A hozzászólás módosítva: Dec 12, 2016
(#) RoliNyh hozzászólása Dec 12, 2016 /
 
Estét!

Nos gyorsan összekalapáltam egy programot Attiny85 -re.

  1. byte pwm=0;
  2. byte ledpwm=0;
  3.  
  4. int setcurrent = A0;
  5. int currentsensor = A1;
  6. int ledpin = 1;
  7.  
  8. void setup()
  9. {
  10.   pinMode(setcurrent, INPUT);
  11.   pinMode(currentsensor, INPUT);
  12.   pinMode(ledpin, OUTPUT);
  13. }
  14.  
  15. void loop()
  16. {
  17.   analogRead(setcurrent);
  18.   analogRead(currentsensor);
  19.  
  20.  
  21.   if(setcurrent > currentsensor)
  22.     ledpwm=ledpwm+1;
  23.   else
  24.     ledpwm=ledpwm-1;
  25.  
  26.   analogWrite(ledpin, ledpwm);
  27. }


A lényege valami olyasmi lenne, hogy van két analóg bemenet,
az egyiken egy potméter (A0),
a másikon egy hall szenzoros árammérő (A1).

A működése meg valami olyasmi lenne, hogyha a potméter beolvasott értéke nagyobb mint az árammérő szenzoron beolvasott érték, akkor a (ledpin) lábon növelli a PWM jel kitöltési tényezőjét,
ha viszont kissebb, akkor pedig csökkenti.

Magyarul próbálja a hall érzékelőn átfolyó áramerősséget a potméteren beállított értékével megegyező szinten tartani.

Amolyan szoftveres LED/Li-Ion cella áramgenerátorként üzemelve.

A hardvert még nem dobáltam össze, de holnap arra is sor kerülne.
Mi a véleményetek a programról, működne ez így?
(#) Bakman válasza RoliNyh hozzászólására (») Dec 12, 2016 /
 
Meredeknek tűnik, mármint a HW-es rész. Elvileg a mintavétel eredménye 0 vagy maximum lehet, lévén PWM-ről van szó. "Átlagolás" mindenképpen kelleni fog a szenzor kimenetén! Ha a terhelés várhatóan nem változik gyorsan, jó lehet, egyébként pedig feleslegesen fárasztod a kontrollert ilyennel, hisz a pontosabb méréshez sűrűbb mintavétel kell, nem marad idő másra. Egy egyszerű feladat le is foglal egy komplett kontrollert.
A hozzászólás módosítva: Dec 12, 2016
(#) RoliNyh válasza Bakman hozzászólására (») Dec 12, 2016 /
 
Igazából ez a kontroller mást nem nagyon fog csinálni, csak erre akarom használni.
Max még kiírja majd az értéket egy led kijelzőre...
(#) kapu48 válasza RoliNyh hozzászólására (») Dec 12, 2016 / 1
 
Valamit kifelejtettél!:
  1. ? = analogRead(setcurrent);
  2.   ? = analogRead(currentsensor);

Bővebben: AnalogRead


Ezért, ez is értelmetlen:
  1. if(setcurrent > currentsensor)  ???
A hozzászólás módosítva: Dec 12, 2016
(#) RoliNyh válasza kapu48 hozzászólására (») Dec 12, 2016 /
 
Ja lehet...

Hát így?

  1. setcurrent = analogRead(A0);
  2. currentsensor = analogRead(A1);
(#) kapu48 válasza RoliNyh hozzászólására (») Dec 12, 2016 / 1
 
Még megjegyezném, hogy:
Az analóg mérés értéke sosem lesz negatív!
Ezért már jobb, ha előjel nélküli változóként deklarálod:
  1. byte pwm=0;
  2. byte ledpwm=0;
  3.  
  4. unsigned int setcurrent = 0;
  5. unsigned int currentsensor = 0;
  6. byte ledpin = 1;
  7.  
  8. void setup()
  9. {
  10.   pinMode(A0, INPUT);
  11.   pinMode(A1, INPUT);

És analóg értéket többször mérjük és átlagoljuk az eredményt!
A zaj kiszűrése miatt.
(#) RoliNyh válasza kapu48 hozzászólására (») Dec 12, 2016 /
 
Valóban az tényleg nem lesz negatív sose...
(#) RoliNyh válasza kapu48 hozzászólására (») Dec 12, 2016 /
 
Most viszont azon agyalok tegyük fel hogy indul a program, a potméter és az árammérő alapértéke 0.

A feltétel szerint:

  1. if(setcurrent > currentsensor)
  2.     ledpwm=ledpwm+1;
  3.   else
  4.     ledpwm=ledpwm-1;
  5.  
  6.     analogWrite(ledpin, ledpwm);


Tehát nem igaz mert a két érték egyenlő, így az else ág hajtódik végre,
magyarul a 0 -ból ha kivon egyet, nem fog túlcsordúlni a ledpwm és beállni 255 -re?
Aztán meg szépen számol visszafelé megint 0 -ig, és kezdi előről?

Nem tudom, jól gondolom -e?

És most elméletben tekintsünk el attól, hogy a feltétel vizsgálat előtt beolvassuk az analóg értékeket,
így azok gyakorlatilag soha (vagy legalábbis rendkívül minimális esetben) lesznek egyenlőek.
Elméletileg már a paraméterszórás miatt sem, és a szabályozás hiszterézisének hiánya miatt sem.
A hozzászólás módosítva: Dec 12, 2016
(#) szeg76 válasza RoliNyh hozzászólására (») Dec 12, 2016 / 1
 
Az átfordulás kivédhető egy-egy feltétellel:

  1. if(setcurrent > currentsensor)
  2.   {  if(ledpwm<255)  ledpwm++;  }
  3. else
  4.   if(ledpwm)  ledpwm--;
  5.      
  6. analogWrite(ledpin, ledpwm);
(#) RoliNyh válasza szeg76 hozzászólására (») Dec 12, 2016 /
 
Na igen, valahogy így én is megcsináltam volna, csak azt akartam kideríteni, hogy fenn áll -e a túlcsordulás veszélye, mert ha igen, akkor védekezni kell ellene. De ha nem, akkor nem kell vele foglalkozni sem...
Következő: »»   301 / 867
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