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   508 / 839
(#) KoblogPerGyok válasza vyky hozzászólására (») Jan 26, 2019 /
 
A type def struct-nak hol van a lezáró } karaktere? Én nem látom?


Javítva!!!!
Már látom elbújt kicsit.
A hozzászólás módosítva: Jan 26, 2019
(#) KoblogPerGyok válasza vyky hozzászólására (») Jan 26, 2019 /
 
Valamint:

int ticks = 0, Speed = 0;//ventilátor

Na ez az érték interrupton van, aminek ekkor Volatile-nak kell lennie!!
(#) KoblogPerGyok válasza vyky hozzászólására (») Jan 26, 2019 /
 
A másik amit nem értek az ez:

Speed = ((ticks * 60)/fandiv);

A stuktúra fandiv eleme mikor kap értéket? Illetve egy változó hol van definiálva ilyen struktúrának?


Kicsit elszoktam ettől a nyelvtől, lehet benézem ezt is.
(#) vyky válasza KoblogPerGyok hozzászólására (») Jan 26, 2019 /
 
Bocsi a helyes kód.
  1. #include <LiquidCrystal.h>
  2.  
  3. //LiquidCrystal_SR lcd(8,7,TWO_WIRE);
  4. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  5. //Varibles used for calculations
  6.  
  7. float value = 0;
  8. float rev = 0;
  9. int ticks = 0, Speed = 0;//ventilátor
  10. int hallsensor = 2;  //The Hall effect sensor (HES) output of fan  connected to pin no 12 of Arduino due
  11. int pot = A3; //ventilátor poti
  12. int pwm = 3;  //PWM motor
  13. //Defines the structure for multiple fans and their dividers
  14. typedef struct{  
  15.  
  16. char fantype;
  17. unsigned int fandiv;}char fan = 1;
  18.  
  19. void pickrpm ()
  20. //This is the interrupt subroutine that increments ticks counts for each HES response.
  21. { ticks++; }
  22.  
  23. //This is the setup function where the serial port is initialised,
  24. //and the interrupt is attached and other pins initialized.
  25. void setup()
  26. {
  27.    pinMode(pot, INPUT);
  28.   pinMode(pwm, OUTPUT);
  29. pinMode(hallsensor, INPUT);
  30. Serial.begin(9600);
  31. attachInterrupt(0, pickrpm, RISING);
  32. //analogWriteResolution(5);
  33.  
  34. //lcd.init();             // initialize the lcd
  35. //lcd.backlight();         // backlight of lcd
  36. lcd.home();              // initialize lcd cursor position
  37.   lcd.begin(16,2);
  38. }
  39.  
  40. void loop ()
  41. {
  42.  
  43. ticks = 0;      // Make ticks zero before starting interrupts.
  44.  
  45. interrupts();    // or use sei(); to Enables interrupts
  46. delay (1000);     //Wait 1 second
  47. noInterrupts();  //  or use  cli();  to Disable interrupts
  48.  
  49. //Times sensorclicks (which is apprioxiamately the fequency the fan
  50. //is spinning at) by 60 seconds before dividing by the fan's divider
  51. // this gives reasonable accuracy in upto few 10s of RPM
  52. // for more accurate and fast measurements, other algorithms is required.
  53. Speed = ((ticks * 60) / fanspace[fan].fandiv);  
  54.  
  55. //Print calculated Speed at the serial port
  56.   Serial.print (Speed, DEC);    
  57.   Serial.print (" RPM\r\n");
  58.  
  59. //Display calculated Speed on LCD display
  60.  
  61.   lcd.setCursor(2, 0); // (column,row)
  62.   lcd.print("Speed:");
  63.   lcd.setCursor(0, 1); // (column,row)
  64.  
  65.  
  66. // Converting integer Speed to an ASCII string of 4 characters padded left
  67.   char  SpeedString[4];    // Buffer to store string of 4 chars + 0 termination
  68.   sprintf(SpeedString, "%4d", Speed);   // change this to %3, 4 ,5 etc depending upon your max speed
  69.   lcd.print(SpeedString);
  70.   lcd.print(" RPM");
  71.  int value = map(analogRead(pot), 0, 1024, 0, 255);
  72.   analogWrite(pwm, value);
  73.   delay(10);
  74. // Following code is for RGB LED.
  75.  
  76.  
  77. }  // end of loop function
(#) Bakman válasza vyky hozzászólására (») Jan 26, 2019 /
 
Úgy van ez, hogy a PWM miatt folyamatosan ki- és bekapcsolod a ventilátor vezérlőáramkörét (ettől megy gyorsan tönkre), a kimeneten pedig emiatt kb. bármi megjelenhet.
(#) KoblogPerGyok válasza vyky hozzászólására (») Jan 26, 2019 / 1
 
Elsőnek:

Ez helyett:
int ticks = 0, Speed = 0;//ventilátor

Ez:

Volatile int ticks = 0;
int Speed = 0;//ventilátor

A másik:

A loop-ban ez van:

ticks = 0; // Make ticks zero before starting interrupts.

interrupts(); // or use sei(); to Enables interrupts

No, de a setup-ban nincs ez:
noInterrupts(); // or use cli(); to Disable interrupts

Szerintem a setup-ban ki kellene kapcsolni az interruptot, hogy a loop-ban a nullázás jó legyen.
Ott ugyanis kinullázza, majd bekapcsolja az interruptot, vár 1 másodpercet, kikapcsolja az interruptot, számol.
(#) gazspe hozzászólása Jan 26, 2019 /
 
Sziasztok!
Egy gyors elméleti kérdésem lenne: Arduino Megát egy ESP8266-al milyen struktúrában érdemes netre tenni? Kicsit szeretném a "Hello World!" szintje felé vinni a honlapot, a Megát pedig egyéb számolásra, I/O-ra használni. Jelenlegi elképzelés alapján az ESP8266-n tárolnám a html-t és annak változóit, amik lekérésekkor/adat frissítésekkor írják/olvassák a Megát és a html interfacet.
Nem tudom mi a "jó" kivitelezése ennek a problémának.
Válaszokat előre is köszönöm.
(#) KoblogPerGyok válasza gazspe hozzászólására (») Jan 26, 2019 /
 
Szia!

Nézd meg mit tud az esp, és mit a mega. Minek bele a mega? Szerintem felesleges.


Itt még az USB-chip is rajta van a lapon, nem beszélve a digitális lábak kivezetéséről.

Bővebben: Link
A hozzászólás módosítva: Jan 26, 2019
(#) vyky válasza KoblogPerGyok hozzászólására (») Jan 26, 2019 /
 
Köszönöm megnézem
(#) KoblogPerGyok válasza vyky hozzászólására (») Jan 26, 2019 / 1
 
Nincs mit, de ezzel még nincs vége szerintem. Sima DC motorra tedd a hall szenzort, és a PWM-t egyelőre ne használj. Először legyen tökéletes a fordulatszámmérés. Esetleg a dc motor fordulatszámát egy potival szabályozhatnád a játék kedvéért.
Tapasztalatom szerint jobb darabokra szedni mindent és azt kellőképpen tesztelni, mielőtt bővíti az ember a további kódot.

A struktúra egyelőre nem kell. Később lehet de csak akkor, ha több motorod van de akkor sem kell feltétlen. Egyelőre inkább bezavar, minthogy segítene.

De ezek csak az én véleményeim.
(#) vyky hozzászólása Jan 27, 2019 /
 
Sziasztok.Meghalt az unom
Van egy megám szeretném vele újra égetni a bootloderét.
Össze is kötöttem őket,és a megára a feltöltöttem az isp programot.
Most a bootloader-re nyomok de hibával áll ki.
a hiba kód: Arduino: 1.8.5 (Windows XP), Alaplap:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"


avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Hiba történt a vázlat feltöltése közben
Mi a gond?
(#) pisti21 hozzászólása Jan 27, 2019 /
 
Sziasztok!

Lenne egy kis problémám a programozás során.
void setup() {
pinMode(13, OUTPUT);
pinMode(11, INPUT);
digitalWrite(11, HIGH);
pinMode(10, INPUT);
digitalWrite(10, HIGH);
}
void loop(){
delay(140);

if (digitalRead(11) == HIGH){
blink5();
}
}

void blink5()
{



for(int i=0;i<42;i++){
digitalWrite(13,HIGH);
delayMicroseconds(6660);
digitalWrite(13,LOW);
delayMicroseconds(6660);
}










return;
}

Hogyan tudnám megírni a programot úgy hogy, jelsorozat 140ms szünet és ismét jelsorozat 500ms szünet és ez ismétlődjön folyamatosan amíg egy másik nyomógombot (10-est) megnyomok. Egyszerre csak egy gombot nyomnék meg.
Segítségeteket előre is köszönöm!
(#) mateatek válasza pisti21 hozzászólására (») Jan 27, 2019 /
 
Mit takar az, hogy jelsorozat? Milyen jelsorozat? A szünetet értem.
(#) pisti21 válasza mateatek hozzászólására (») Jan 27, 2019 /
 
Szia!
for(int i=0;i<42;i++){
digitalWrite(13,HIGH);
delayMicroseconds(6660);
digitalWrite(13,LOW);
delayMicroseconds(6660);
}

Ez lenne a jel sorozat.
(#) mateatek válasza pisti21 hozzászólására (») Jan 27, 2019 /
 
Időzítsed a millis() segítségével. Használjál időbélyeget. Ha letellett az eltelt idő, akkor menjen.
A blink5 végére tegyél be egy időbélyeget. A loop-ban pedig nézzed, hogy mennyi idő tellett el ahhoz képest.
A hozzászólás módosítva: Jan 27, 2019
(#) simonsen válasza vyky hozzászólására (») Jan 28, 2019 /
 
Kedves vyky!

Az rduino analóg bemenet normál esetben 0-1023 között számol.

Elosztod 4 el és akkor lesz neked 0-255

Arduinó tankönyv olvasd el nagyon hasznos.

minta példa:

value = analogRead(pin); // sets 'value' equal to 'pin'
value /= 4; // converts 0-1023 to 0-255
analogWrite(led, value); // outputs PWM signal

Ha potmétert használsz a hall sensor nem szükséges.

A potméter bekötése nem mindegy hogyan van a csúszka van az analóg bemeneten a poti kezdő vége 5Volt a másik vége test.

Ha benézted a bekötést ez is okozhat csalódást.

Ha servó-t működtetsz vele akkor a MAP utasítással tudod beállítani pl: 180 fokos a servo akkor
egyenletesen eltudod osztani a 0-255 to 180 fok stb akkor követi a potméter állását a ventillátor motor sebessége is az szerint fog változni ...

Én csak ennyit olvastam róla.

Üdvözlettel simonsen!
(#) vyky válasza simonsen hozzászólására (») Jan 29, 2019 /
 
Szia.Köszönöm.
(#) gaspa hozzászólása Jan 29, 2019 /
 
Sziasztok
Volna egy gondom,RTC adat kiírással.A loop-ban soros portra rendesen írja az időt,de az lcd-re nem.
Vajon mit csináltam rosszul?Lcd-re minden mást jól kiír.
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 8, 4, 5, 6, 7);
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress eloremeno = {0x28, 0x9C, 0x2A, 0x11, 0x05, 0x00, 0x00, 0x15};
DeviceAddress visszatero = {0x28, 0x67, 0x8E, 0x10, 0x05, 0x00, 0x00, 0x3C};

float A7Th;//Hideg Hőmérséklet

void setup() {
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(2019, 1, 28, 9, 20, 0));
}
sensors.begin();
sensors.setResolution(visszatero, 12);
sensors.setResolution(eloremeno, 12);
lcd.begin(20, 4);
lcd.clear();
lcd.print("Ua:12.5V Tm:85.5C \x13\5Ig:30.5A Tk:20.5C *6I+:15.6A 01/14 15:30------\x14\x14\x14()---------");

lcd.setCursor(19, 0);
lcd.print("3");
Serial.begin(9600);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
lcd.print(tempC);
}
void loop() {// Mérési program indul***
lcd.setCursor(6, 3);
lcd.print("-");
DateTime now = RTC.now();
lcd.setCursor(15, 2);
lcd.print(now.hour(), DEC);
Serial.print(now.hour(),DEC);
lcd.setCursor(18, 2);
lcd.print(now.minute(),DEC);
Serial.println(now.minute(),DEC);

delay(1000);
}
(#) Kera_Will válasza gaspa hozzászólására (») Jan 29, 2019 /
 
Idézet:
„Vajon mit csináltam rosszul?”

pl.: Nem használtad a Kód gombot amikor a forrásodat beszúrtad a vágólapról


Így szebben fog kinézni

  1. #include <Wire.h>
  2. #include <RTClib.h>
  3. RTC_DS1307 RTC;
  4. #include <OneWire.h>
  5. #include <DallasTemperature.h>
  6. #include <LiquidCrystal.h>
  7. LiquidCrystal lcd(9, 8, 4, 5, 6, 7);
  8. #define ONE_WIRE_BUS 10
  9. OneWire oneWire(ONE_WIRE_BUS);
  10. DallasTemperature sensors(&oneWire);
  11. DeviceAddress eloremeno = {0x28, 0x9C, 0x2A, 0x11, 0x05, 0x00, 0x00, 0x15};
  12. DeviceAddress visszatero = {0x28, 0x67, 0x8E, 0x10, 0x05, 0x00, 0x00, 0x3C};
  13.  
  14. float A7Th;//Hideg Hőmérséklet
  15.  
  16. void setup() {
  17. Wire.begin();
  18. RTC.begin();
  19. if (! RTC.isrunning()) {
  20. Serial.println("RTC is NOT running!");
  21. RTC.adjust(DateTime(2019, 1, 28, 9, 20, 0));
  22. }
  23. sensors.begin();
  24. sensors.setResolution(visszatero, 12);
  25. sensors.setResolution(eloremeno, 12);
  26. lcd.begin(20, 4);
  27. lcd.clear();
  28. lcd.print("Ua:12.5V Tm:85.5C \x13\5Ig:30.5A Tk:20.5C *6I+:15.6A 01/14 15:30------\x14\x14\x14()---------");
  29.  
  30. lcd.setCursor(19, 0);
  31. lcd.print("3");
  32. Serial.begin(9600);
  33. }
  34. void printTemperature(DeviceAddress deviceAddress)
  35. {
  36. float tempC = sensors.getTempC(deviceAddress);
  37. lcd.print(tempC);
  38. }
  39. void loop() {// Mérési program indul***
  40. lcd.setCursor(6, 3);
  41. lcd.print("-");
  42. DateTime now = RTC.now();
  43. lcd.setCursor(15, 2);
  44. lcd.print(now.hour(), DEC);
  45. Serial.print(now.hour(),DEC);
  46. lcd.setCursor(18, 2);
  47. lcd.print(now.minute(),DEC);
  48. Serial.println(now.minute(),DEC);
  49.  
  50. delay(1000);
  51. }
A hozzászólás módosítva: Jan 29, 2019
(#) sargarigo válasza gaspa hozzászólására (») Jan 29, 2019 / 1
 
Szerintem az lehet, hogy az lcd és a serial nem ugyanazokat valósítja meg a print(ln) függvényekkel. Próbáld meg egy sztringben előállítani a kiírandó dolgokat, és azt a sztringet átadni a serialnak és az lcd-nek is!
(#) KoblogPerGyok válasza Kera_Will hozzászólására (») Jan 29, 2019 /
 
Szia!

lcd.print(now.hour(), DEC);

Esetleg itt lehet a gond. Az lcd.print()-ből hívódik meg a now.hour() amit nem biztos, hogy le tud kezelni.

Minden esetben:


  1. int ora
  2. int perc
  3. int masodperc
  4.  
  5. ora=now.hour();
  6. perc=now.minute();
  7. masodperc = now.second();
  8.  
  9. Lcd.Print (ora);
  10. Lcd.Print (perc);
  11. Lcd.Print (masodperc);




Ez még nem szép, de ha megy akkor igazíthatsz rajta ahogy csak szeretnéd.
(#) Kovidivi válasza KoblogPerGyok hozzászólására (») Jan 29, 2019 /
 
"Az lcd.print()-ből hívódik meg a now.hour() amit nem biztos, hogy le tud kezelni." - pontosabban:
a now.hout() függvény visszatérési értékét kapja meg az lcd.print() függvény. Először a now.hour() fut le, majd az lcd.print, egymás után.
(#) gaspa válasza gaspa hozzászólására (») Jan 29, 2019 /
 
Bocs a vaklárma miatt,rendesen működik az lcd print,ahogy Kovidivi leírta,megkapja a now függvények visszatérő értékét binárisan.Pusztán annyi történt,hogy az oled kijelzőn az oszlop cÍm 1324 sorrendben van és másik adat helyére írta be az időt,de pont jó helyértékkel,nem tolódott el és nem vettem észre mert csak percenként változott.Mindenkinek kösz.
(#) KoblogPerGyok válasza gaspa hozzászólására (») Jan 29, 2019 /
 
Haha!

Tipikus bug! Az ilyenekért jó programozni! Hányszor fordul elő ilyen hiba!

Jó, hogy most már minden ok.
(#) gaspa válasza KoblogPerGyok hozzászólására (») Jan 30, 2019 /
 
Azért még minden nem ok,többször volt gondom külső lib beolvasással.Egyet most is csak a lib mappába tett be,de a könyvtárba nem.Hogyan lehet ezt pontosan csinálni?
(#) Vacok hozzászólása Jan 31, 2019 /
 
Sziasztok!
Építettem egy atmega328p-au ic-re épülő fordulatszámmérőt. A hardver már teljesen kész van, de a programozás részével már az elején elakadtam. Isp-n szeretném a programot beletölteni. A programozó lábaknak is van a kspcsolásba funkciója, azokra nyomógombokat kötöttem, szóval programozás közben azok szabadon állnak, a reset láb egy 10k ellenálláson tápra van húzva. A csatlakozót helyszűke miatt pogo csatlakozóval tudtam megoldani. Végig követve az ic programozó kivezetéseit a számítógépig minden stimmel, a gép mégse látja az avr-t. Mit ronthattam el? Vagy eleve hibás lenne az ic? A pogo csatlakozó miatt a programozó kivezetésekhez ujjal hozzáérek miközben a csatlakozót szorítom a nyáklemezhez, ez lenne a gond?
(#) ronin75 válasza Vacok hozzászólására (») Jan 31, 2019 /
 
Lehetséges, hogy ez a gond, probáld meg esetleg más valamivel megoldani a szorítást (ruhacsipesz vagy valami ami alkalmas).
(#) Vacok válasza ronin75 hozzászólására (») Jan 31, 2019 /
 
Remélem ez bejön, mert onnan kiszedni az ic-t gyakorlatilag lehetetlen. Próbálkoztam már a dip tokút is nyákban programozni, de valami miatt ott sem jártam sikerrel csak úgy sikerület, ha kiemeltem a foglalatból ès külön magába programoztam
A hozzászólás módosítva: Jan 31, 2019
(#) Vacok válasza ronin75 hozzászólására (») Jan 31, 2019 /
 
Még azon agyalok, hogy a kristály helyére egy órakvarcot tettem, ami aszinkron módban fog üzemelni a belső 8MHz órajelhez képest. Az arduino program alacson frekis kristállyal vagy kristály nélkül felismer egy null kilométeres avr-t? Vagy az atmega328 gyárilag 8 vagy 16MHz kvarcra van beállítva?
A hozzászólás módosítva: Jan 31, 2019
(#) sargarigo válasza Vacok hozzászólására (») Jan 31, 2019 /
 
Esetleg nézd meg, nem-e a serial lábakon lóg valami! Az is akadályozhatja a programozást!
Következő: »»   508 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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