Stránka 2 z 2
Napsal: 15 led 2016, 12:42
od pocitujlasku
Arduino by som nezavrhoval, niekedy som sa hral s x51 v C a ASM - tam sa da povedat, ze mas vsetko pod kontrolou, ale napisat program je casovo narocne. Dnes je bohuzial doba taka, ze kazda usetrena hodina je k dobru.
Teraz si pre domace vychytavky robim vsetko v arduino, jednoduche veci viem zbuchat relativne rychlo, pohodlne, na kopec veci existuje kopec kniznic. Prave dokoncujem ovladanie akvarka arduino+display 5110+wifi modul. prototyp som mal hotovy za 2 dni. Mam tam datum, cas, teplotu (DS18B20), nastavim si casy zapnutia/vypnutia, a to cele viem ovladat cez telnet. V ASM, alebo C by som to robil mesiac.
Kedze vacsinou som samouk, tak som isiel cestou pokus/omyl - nasiel som si nejaky hotovy projekt, ktory robil zhruba to, co som potreboval a skusal som ho okresat, upravit, prisposobit.
Ono vsetky jazyky su o tom istom, len sa lisia zapisom.
Napsal: 18 led 2016, 13:09
od denny_ul
poradí někdo, jak se v arduinu změří takový impuls
v Bascomu to vypadá takto
Kód: Vybrat vše
Bitwait Pinb.0 , Set 'čekej na úroveň "1"
Time1 = Start Timer1 'spusť timer1
Bitwait Pinb.0 , Reset 'čekej na úroveň "0"
Time2 = Stop Timer1 'zastav timer1
pulsbreite = Timer1 'zapiš stav timeru1
když nechci použít "pulsein"
Napsal: 18 led 2016, 14:33
od popopepe
Téměř stejně:
Kód: Vybrat vše
//
// FILE: PulseWidthMeter.pde
// AUTHOR: Rob Tillaart
// DATE: 2012-mar-20
//
// PUPROSE:
//
unsigned long count = 0;
void setup()
{
Serial.begin(9600);
Serial.println("pulse width meter 0.1");
pinMode(3, INPUT);
}
void loop()
{
count = 0;
while ((PIND & B00001000) == B00000000); // wait for HIGH
unsigned long start = micros(); // this line influences the reading...
while ((PIND & B00001000) == B00001000) count++; // start counting until LOW
unsigned long stop = micros();
Serial.print("CNT: ");
Serial.println(count, DEC);
Serial.print(stop-start, DEC);
Serial.println(" microseconds ");
Serial.print((1.0*count)/(stop-start), 3);
Serial.println(" count per microseconds ");
delay(1000);
}
http://forum.arduino.cc/index.php?topic=96971.0
Ale nezkoušel jsem to fyzicky.
Napsal: 19 led 2016, 18:51
od saitt
může někdo vysvětlit tenhle příkaz nepoužívám...to je nějaká maska nebo něco takového?
Napsal: 19 led 2016, 19:16
od Habesan
Jo.
Vyhodnocuje se tím 4. LSB na PIND, a když je v nule je výsledek logická jednička.
Napsal: 20 led 2016, 19:05
od saitt
Něco podobného jsem viděl v programech v PLCéčku. Jo pro ty co se nemužou dostat na piratebay....
https://thepiratebay.se/search/arduino/0/99/0
Napsal: 21 led 2016, 10:13
od Jurawood
akorát bych dal do loop() hned na začátek while (1)
a místo B00000000 0b00000000.
Bude to několikanásobně rychlejší a přesnější
A pokud odpráskneš i časovač pro micros() a načasuješ si i timer sám tak budeš rychlejší asi 20x
Jsou to maličkosti
Napsal: 25 led 2016, 18:29
od Le_Ze
Měl bych dotaz.
Když chceme na displej 20x4 zobrazovat čas do sepnutí pinu.
Hodiny a minuty není problém.
Kamoš to ale chce i s vteřinami.
Není to plynule.
skače to po 1 - 2 - 3 vteřinch, podle náročností vykonavaneho programu.
Napsal: 25 led 2016, 19:55
od Habesan
To jsem čekal, že je ATmega výkonnější.
Nastav si časovač na přerušení kažnou sekundu (nebo trochu méně) a ty sekundy posílej v obsluze toho přerušení.
Napsal: 25 led 2016, 20:35
od lesana87
Sebevýkonnější hw zazdí špatně napsaný sw. Nedávno jsem dělala stopky, procesor (AVR) běžel na 32kHz a stíhal multiplexovat displej (i se sekundama) a ještě půlku času spát.
Napsal: 26 led 2016, 21:36
od Le_Ze
Každý nemůže byt tak šikovný.