Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
3 bájtot küld ki, nem 3 karaktert. A programban a körben lévő R egy úgynevezett Unicode szimbólum, ami UTF-8 kódolásban két bájton van kódolva. Tehát 1 karakter, ami 2 bájton van ábrázolva. https://www.compart.com/en/unicode/U+00AE (A 194-es karakter azaz a 0xC2 ennek a felvezető bájtja, ha megnézed a linkelt oldalon.)
Az UTF-8 egy változó hosszúságú kódolás: az első 127 érték az ASCII-vel kompatibilis, a felette lévő értékek viszont mást jelentenek, és van olyan érték, ami után második, harmadik stb. bájt is jön és azzal együtt ad ki egyetlen karaktert. Általában a mai editorok az ASCII-n kívüli karaktereket UTF-8-ban kódolják, és így kerül be a programba is. Ha eltérő kódolást akarsz használni, ahhoz valami erőfeszítést kell tenni. Nem tudom hogyan, még nem csináltam ilyet sosem. Egyszer tároltam több ékezetes betűs szöveget a programomban, amit át kellett küldeni egy másik procinak is: végül úgy döntöttem, hogy futásidőben alakítom át azt a néhány ékezetes betűt a saját kódolásunkra. Így a kódba simán közvetlenül beírhattam a string konstansokat.
Sziasztok,
A segítségeteket szeretném kérni. Építettem egy berendezést ami kettő gombot kapcsolgat egy szervó motor segítségével (180fok) és egy nano vezérli. Olyan programot szeretnék írni, hogy a program generál egy random számot, amit eltárol, majd annyiszor megnyomja a gombot. Random generál egy időt 1-5 perc között majd az előző gombnyomás számnak megfelelően a másik irányba mozdul és a másik gombot nyomja meg. Majd megint generál egy új időt, vár és kezdődik előröl a ciklus. Tudna ebbe valaki segíteni, hogy merre induljak, sajnos csak felületesen értek a programozáshoz. Köszönöm
És mi az amiben a segítség kellene? Meddig jutottál el?
Használhatod a random() függvényt a leírásalapján: Bővebben: Link
Még most szedem össze azokat az elemeket és a tudást amiből össze tudnám rakni. Kerestem minta programot randomszámra, és érték vissza adásra de sajnos nem találtam. Tudsz esetleg segíteni a program össze hegesztésének mentorálásában?
Idézet: „Általában a mai editorok az ASCII-n kívüli karaktereket UTF-8-ban kódolják, és így kerül be a programba is. Ha eltérő kódolást akarsz használni, ahhoz valami erőfeszítést kell tenni. Nem tudom hogyan, még nem csináltam ilyet sosem.” Windows alatt a Notepad++ és hasonló editorok képesek arra, hogy UTF/ASCII/stb. konverziót csináljanak a szövegben, Linux alatt a parancssoros iconv kiváló eszköz erre.
Ez a generátor nem valami jó, ha a seed nem változik, akkor ugyan azokat a számokat, ugyanabban a sorrendben fogja visszaadni...
De javítható, az ajánlás szerint valamelyik nem használt analóg bemeneten mért zaj érték felhasználásával. Ezt egyébként mindenűt így teszik.
(1-5. különbem nem is lehet túl sok kombináció) A hozzászólás módosítva: Máj 7, 2020
Sziasztok!
A 1602-es LCD kijelző és az I2C interfész használatával kapcsolatban olvastam egy írást (http://www.martyncurrey.com/arduino-with-hd44780-based-lcds/) ahol az interfész mindkét kivezetésére (SDA, SCL) egy ellenálláson keresztül magas jelet adtak. Ezt máshol nem láttam eddig. Szerintetek is indokolt a felhúzó ellenállások alkalmazása? Köszönöm!
Ha a modulon nincs felhúzó ellenállás, akkor neked kell rárakni. Az I2C vonalakra mindig kell felhúzó ellenállás. Ha pl. egy DS1307-es IC-t (nem modult) és egy kontrollert akarsz összekötni, mindenképpen kell mert az IC nem tartalmazza a felhúzásokat.
Egy I2C kapcsolatra több eszköz is ráköthető egyszerre. Ahhoz, hogy ne tudják egymást tönkretenni, az órajel és adatlábak nyitott kollektoros ki- és bemenetek. Így a legrosszabb esetben összezavarodnak a jelek de nem fog semmi füstölni, pl. akkor, ha egyszerre két eszöz "adás" üzemmódra kapcsol pl. programhiba miatt.
Igen, ártani soha nem árt. Ha több I2C vacak van az Arduinora kötve, akkor érdemes számolgatni az ellenállások értékét. ( vannak erre pontos leirások).
Én alapbol minden Arduinora 10 kOhmosat kötök. Ez minimum elinditja az I2C kommunikáciot és nem is terheli le annyira a kimenetet, hogy még ne lehessen 6-10 modult rákötni az I2C-re.
Sziasztok!
EEPROM írásával kapcsolatban kérek segítséget. Az alábbi kódot szeretném kiegészíteni eeprom címzéssel, mert több különálló adatot kéne menteni. Sehogy nem akar összejönni, már zsong az agyam tőle...
Miért nem az Arduino Reference oldlán nézel mintapéldát?
EEPROM.write()
EEprom.read()
Gondolom nem véletlenül használná az AVR libet. Nem akar bájtonként szenvedni a dword-el.
morgo: AVR lib-et viszont rosszul használja. Tudtommal Az EEMEM előtagot akkor kell odatenni, ha fix adatot tárol ott. Ha változótakar beírni akkor nem. Valamint az eeprom_write_... címét mutatóként kell megadni. És Esetleg a write helyett ha van még pár microsecundum idő akkor az updatet lehetne használni az először ellenőrzi, hogy különbözik-e az ottlevő adat a tárolandótól. Csatoltam egy peldat. A hozzászólás módosítva: Máj 11, 2020
"Nem akar bájtonként szenvedni" - eepromot mindenféleképpen byte-onként kell írni, szóval mindegy, hogy milyen megoldást választ. Az integert fel kell bontani két byte-ra, a long-ot négyre, és úgy eltárolni.
Nyilván bájtonként kell, de nem mindegy hogy ő oldja meg vagy a lib. Az AVR libben külön funkciók vannak, bájtra, wordre, dwordre, és blokkra. Nézz bele.
Köszönöm! Egy 10 kOhm-al rápróbálok. Csak egyet akarok rátenni.
Idáig jutottam a függvénnyből. A probléma, hogy a szervó nem azt csinálja amit szeretnék, van ötleted mi lehet a baj?
Vízszintesen áll a szervón egy kar. Jobbra és balra van alatta egy egy gomb. SG90-es szervót használok. A lényeg, hogy a szervó x szer megnyomja az A gombot ehhez (40 fokot kell oda vissza mozogni x szer) utána vár és x szer megnyomja a B gombot majd vár. Viszont a szervóban semmi szabályosság nincs majd egyszer megakad. Köszönöm mindenkienk a segítséget A bent maradt, értelmetlen kóddarab törölve. A hozzászólás módosítva: Máj 12, 2020
Moderátor által szerkesztve
aA szerkezetet random időnként kell megnyomni. A működése olyan mint egy éberségfigyelő. Amint gépi működtetést érzékel letilt.
A hozzászólás módosítva: Máj 12, 2020
Moderátor által szerkesztve
Miért veted le a várakozásokat 50ms-re?
Szerintem nem tud olyan gyorsan mozogni a szervód. Másik hiba lehet a tápegységet rángatja és ezért resetel az AVR.
Sziasztok !
Bocs, ha nem ide való a kérdésem, majd megkérem a modit, hogy tegye át. Szóval összeraktam EZT a pákaszabályzót. Arduino nanot használtam, fut is rajta a program, viszont a hőmérsékletet nem méri. Helyesebben állandóan 310 fokot mutat mért értéknek és folyamatosan fűti a pákát. A programozáshoz nem értek, azért tettem föl ide a kérdésemet, hogy a hozzáértők mondjanak véleményt a kódról, hogy az így elvileg működőképes-e. (nem másoltam be ide a kódot, de ha kell akkor pótolom) A páka hőfokát egyébként a PWM jel nullátmeneteinél méri a program ? Még annyi infó, hogy az ADC0 lábon +5V van.
Ha az a kapcsolás, amit belinkeltél, akkor pont fordítva működik: amikor a PWM jel nulla, akkor kapja meg a páka a fűtőfeszültséget (a Q1 tranzisztor fázist fordít).
Ez után kezdődik a mérés, vagyis a "nulla" a nyitott tranzisztor:
analogWrite(CONTROL_PIN, 255); delayMicroseconds(300);
Ok, tehát akkor a program és a kapcsolás is rendben van.
Akkor a müv. erősítőnél keressem a hibát? Egyébként MCP 601-el próbáltam éleszteni. |
Bejelentkezés
Hirdetés |