nicolasoto
Vytvořené odpovědi
-
AutorPříspěvky
-
Axamith
ÚčastníkKdyž jsem na Wemos zapojil výstup z HX711 na A0 a D1, tak to nejelo. Samozřejmě jsem upravil zdroják. Musím to ještě vyzkoušet. Nejlépe na UNo (kde vím, že to jede) přehodit vstup na D1, D2 a uvidím, co mi to vysype.
Jindra
ÚčastníkPokud tam nebude funkce delay() tak ty ledky blikaji tak rychle, ze to oko ani nezaregistruje. Myslel jsem ze loop() za jedno kolo odela posun na registru o jeden byt. To znamena ze za jedno kolo s funkci delay() rosviti jednu ledku podle pole data[] a pak prave ceka 200ms. Slo by to vyresit millis()?
EDIT: ne byt, ale bit
BlindP
ÚčastníkTebe zajímá jen gprmc, ty vety vypaji takto:
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
RMC,hhmmss,A,Latitude,N,Longitude,E,knots,angle,ddmmyy,Magnetic Variation,check
rychlost komunikace 9600, nekde byva 4800petouf
ÚčastníkNo, paráda, stačilo „nakopnout“ 🙂
Nakonec jsem našel GpsSimul – to je skoro přesně, co jsem potřeboval. Zadáš si rychlost a směr a už to vysílá data. Bohužel to nějak nemohu rozchodit. Arduino sice přijímá znaky, žel poloha, rychlost a tak se mi neukazuje. Je tam několik nastavení, pokoušel jsem se nastavit všechny kombinace a stále nic 🙁
vypnu-li $GPRMC přestane komunikovat úplně. Pak je tam k nastavení $GPGLL, $GPVTG, $PZDA, $GPGGA, $GPGSA.
Nastavení portu je předpokládám dobré, když to komunikuje. No, pokud bys o něčem věděl, co změnit… Budu studovat a experimentovat, třeba se podaří.
Ale moc díky za typ 🙂Vojtěch Vosáhlo
ÚčastníkJeště jsem zapoměl zmínit že jsou tam 2 programy. Kratší je blink v GCC s pauzou 100ms a delší je arduinovské Blink s pauzou 1s. Prostě si odkomentujte co potřebujete a nebo zkuste vlastní kód.
BlindP
ÚčastníkAhoj, na té desce je už tranzistor jako spínač, kdyby tam nebyl pin č. 2 by se odebral do křemíkového nebe 🙂 400mA se bere z napájení a ten žlutý slouží k ovládání – spíná tranzistor a ten pak spíná vlastní elektromagnet. Problém bych tam neviděl.
BlindP
ÚčastníkAhoj, podle rychlého hledání z toho lezou data ve formátu nmea – https://www.startpage.com/do/search?q=nmea+standard jestli chceš, někde bych měl mít uložený logy z lodi to bys mohl posílat z pc převodníkem do arduina, nebo si na zahradě nahrej vzorek do pc a pak zase posílat z pc zpět.
RomanB
ÚčastníkFunkce delay(200) tam je proto, protože void loop() je stále se opakující smyčka. Když se postupně rozsvítí všechny ledky, pak se čeká 200 ms a ledky se začnou znova rozsvěcet. Vůbec tam nemusí být.
Pro podmínku použij if (podminka==1 && index<7){a tady dej rutinu pro zobrazení}
else (podminka==0) {rutina pro zobrazení,ale s data2[1]
=B00000000 aby ti to zhaslo}RomanB
ÚčastníkVýstupy z HX711 sice jdou na piny UNA A0 A1, ale komunikace je binární. V kódu nikde nenalezneš funkci AnalogRead()…
Vojtěch Vosáhlo
ÚčastníkNic extra, prostě jen metoda pokus omyl. Vím že při malých datech to fungovalo ale když bylo dat víc, nevzalo arduino vše, tak jsem tipnul a vyšlo to ?
michal123
ÚčastníkDěkuji brzy ozkouším, jak jste na to přišel?
Vojtěch Vosáhlo
ÚčastníkOprava je na tomto linku. Stačilo jen pozměnit delay při posílání charakterů na 10us, viz. řádek 349.
michal123
ÚčastníkJeště jedna drobnost, proč mi to nejde když tak dám hex od blink z arduina?
ferdo1
ÚčastníkMne to robí tiež, ako neprihlásený, kód je v jednom riadku. Po prihlásení už je to ok.
Vojtěch Vosáhlo
ÚčastníkTak bylo tam hned několik problémů. Zaprvé problém s konverzí toho ascii na hex a pak i se samotným zápisem v poli + pár smyček atd.
Nebudu vysvětlovat vše co jsem změnil ale jen to co potřebujete vědět. Nejdůležitější je asi konverze kterou jste prováděl, v poli jste měl sice zapsané byty tak jak by měly být ale pak jste posílal prakticky jen polovinu. Příklad:
Měl jste v poli byte 0x0C který by měl být v tomto tvaru odeslán do arduina ale vy jste ho posílal jako 2 byty, 0x00 a 0x0C, takhle tomu bylo u každého z nich.Upravil jsem tedy kód tak, aby jste do pole mohl zapsat jednu stránku, tzn 128B, ve vašem případě !!!256!!! charakterů, 256 kvůli tomu že jeden byte je reprezentován dvěma charaktery. Pokud budete tedy kopírovat data z intel hex souboru, odpovídá 256 charakterů přesně 8mi řádkům (pokud se odstraní :10 0000 00 ze začátků a poslední hex číslo což je checksum).
Opět dávám odkaz na pastebin, ten kód co tam je je PLNĚ funkční a uploadne na arduino program který bliká led na pinu 13 jednou za 100ms. Zkuste si sám jestli vám poběží.
Hezký zbytek dne.
posjirka
Účastníkok to chápu, ale o jaké vzdálenosti se bavime?
Kubinna
ÚčastníkPostup bude následující:
Uživatel umístí auto ke zdi a nastaví vzdálenost, kterou má vozítko udržovat od zdi (vzdálenost vozítka ke zdi). Auto zjistí jak daleko je od zdi a snaží se co nejrychleji dostat na danou vzdálenost a udržovat ji (i přes nerovnost stěny).
Pro rychlost používám PWM, ve výše zmíněném kódě (PD regulátor) používám základní rychlost 100, pokud auto udržuje správnou vzdálenost. V případě špatné vzdálenosti je použito až 150.michal123
ÚčastníkMělo by to do druhého procesoru přes piny A2 A3 sw serial nahrát hex z proměné str.
vypadá to, že procesor naváže synchronizaci, něco i do druhého naprgramuje ale druhý procesor po naprogramování a restartování nic nedělá.
(doufám, že to takto stačí)Vojtěch Vosáhlo
ÚčastníkZkuste trošku přiblížit co to má dělat, pak na to můžu kouknout. Jak nebliká, jako sériová komunikace?
michal123
ÚčastníkDěkuji, mám další problém.
Nejspíš jsem ze zamotal kolem 336 řádku, zdá se, že proces již proběhne celý ale někde v tatech musí bých chyba protože arduino pořád nebliká.Vojtěch Vosáhlo
ÚčastníkNo na začátku jste arduinu řekl že chcete proměnnou uložit do flash, teď mu tedy musíte říct že chcete číst z flash. Aby kód fungoval, musí vypadat takto:
const uint8_t strr[4][50] PROGMEM = {//tohle je pro ukazku, dale se bude nacitat postupne coz uz ale nebude problem "0123456789ABCDEF", "230000000000000000000000000000", "600000000000000000000000000000", "800000000000000000000000000000" }; void setup() { Serial.begin(115200); Serial.println(strr[0][1]); Serial.println(strr[0][13]);//tady to jeste funguje for (int a = 0; a < 13; a++) { //3 Serial.print(a); Serial.print(","); Serial.print(pgm_read_byte(&(strr[0][a])), BIN);//proc to ve foru nefunguje? Serial.print("\t,"); Serial.println(pgm_read_byte(&(strr[1][a])), BIN); } } void loop() { }
Důležité je právě pgm_read_byte();, to označuje že chcete číst z programové paměti.
michal123
ÚčastníkTak jsem pořád zaseknutý na tomhle
Proč to nefunguje? a jak na to?posjirka
Účastníkmoc nechápu problém. přesnou vzdálenost od zdi. tím myslíš jako vzdálenost od startu nebo distance od překážky během jízdy? v jakém směru má být ta vzdálenost? o jaké hodnotě se baví me? jakou rychlostí se vlastně pohybuje to auto? ….
pedyngro
ÚčastníkPrávě jsem se dozvěděl o možnosti INPUT_PULLUP 😀
Rád bych ale věděl, proč nefungovala první verzepedyngro
ÚčastníkUž jsem to vyřešil trochu šikovnějším kódem:
byte led = 50;
byte tlacitko = 52;
void setup() {
pinMode(led,OUTPUT);
pinMode(tlacitko,INPUT);
Serial.begin(9600);
}void loop() {
cteni = digitalRead(tlacitko);
if(cteni == 0){
Serial.println(„high“);
digitalWrite(led,HIGH);
}
else if(cteni == 1){
digitalWrite(led,LOW);
Serial.println(„low“);
}
}Stejně ale nevím, kde jsem předtím udělal chybu…
Breitak
ÚčastníkPři hledání na inernetu jsem jeste narazil na zajimavou stranku.
Ohledně 433MHz
http://www.nemcon.nl/blog2/
Třeba to někomu pomůže.michal123
ÚčastníkNějak mi trvalo dlouho než jsem se k tomu vůbec dostal, tady posílám nějak opravený neodzkoušený kód
Zítra se k němu dostanu zase až pozdě, zatím kód funguje do funkce kolem řádku 311 taže už to snad brzy vyjde.Vojtěch Vosáhlo
ÚčastníkNo s typem pole problém nebude, jde o to co a jak do něj zapíšete.
michal123
ÚčastníkDěkuji, už to také vidím ale porád si nedovedu vysvětlit, že to vracelo blbosti i když tam HEX nebylo.
Az přiijdu odpoledne domů tak to znovy vyzkouším s polem UINT_8 které by k tomu mělo být nejspíš nejlepší.Vojtěch Vosáhlo
ÚčastníkNo ono to je pochopitelné ale mě to nedošlo. Vy máte vaše pole zapsané jako stringy. Viz třeba 1. řádek:
"0C9457000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C946900"
To si ale arduino neinterpretuje tak jak potřebujete. Dal jste to jako string takže arduino to má za sérii charakterů, např. nula by se tedy přeložila na 48 DEC podle ASCII. Musel byste buď použít nějaký převodník který by předělal HEX čísla na znaky které byste pak zapsal jako string a nebo čísla zapisovat v jakémkoliv tvaru (hex, dec nebo jako char) po kolonkách – 0x0C, 0x94, 15, ‚P‘,…
Možná jsem si nevšiml nějaké konverze, taky jsem tu zmiňovanou smyčku vůbec neviděl v kódu. Kdyžtak mě odkažte na řádky.
-
AutorPříspěvky