Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
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
Valamint:
int ticks = 0, Speed = 0;//ventilátor Na ez az érték interrupton van, aminek ekkor Volatile-nak kell lennie!!
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.
Bocsi a helyes kód.
Ú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.
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.
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.
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
Köszönöm megnézem
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.
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?
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!
Mit takar az, hogy jelsorozat? Milyen jelsorozat? A szünetet értem.
Szia!
for(int i=0;i<42;i++){ digitalWrite(13,HIGH); delayMicroseconds(6660); digitalWrite(13,LOW); delayMicroseconds(6660); } Ez lenne a jel sorozat.
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
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!
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); } 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
A hozzászólás módosítva: Jan 29, 2019
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!
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:
Ez még nem szép, de ha megy akkor igazíthatsz rajta ahogy csak szeretnéd.
"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.
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.
Haha!
Tipikus bug! Az ilyenekért jó programozni! Hányszor fordul elő ilyen hiba! Jó, hogy most már minden ok.
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?
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?
Lehetséges, hogy ez a gond, probáld meg esetleg más valamivel megoldani a szorítást (ruhacsipesz vagy valami ami alkalmas).
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
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
Esetleg nézd meg, nem-e a serial lábakon lóg valami! Az is akadályozhatja a programozást!
|
Bejelentkezés
Hirdetés |