Novoroční závazek +Zdroj informací - Arduino pro začátečníky

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#16 Příspěvek 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.
No vidis, a tak si sa bal

Uživatelský avatar
denny_ul
Příspěvky: 30
Registrován: 14 zář 2015, 02:00
Bydliště: Ústí n.L.

#17 Příspěvek od denny_ul »

poradí někdo, jak se v arduinu změří takový impuls
Obrázek
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"

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

#18 Příspěvek 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.

Uživatelský avatar
saitt
Příspěvky: 107
Registrován: 11 lis 2015, 01:00
Bydliště: Ostrava

#19 Příspěvek od saitt »

Kód: Vybrat vše

PIND & B00001000) == B00000000
může někdo vysvětlit tenhle příkaz nepoužívám...to je nějaká maska nebo něco takového?

Uživatelský avatar
Habesan
Příspěvky: 6924
Registrován: 12 led 2009, 01:00
Bydliště: Plzeňsko
Kontaktovat uživatele:

#20 Příspěvek od Habesan »

Jo.
Vyhodnocuje se tím 4. LSB na PIND, a když je v nule je výsledek logická jednička.
Sháním hasičák s CO2 "sněhový", raději funkční.
(Nemusí mít platnou revizi.)
(Celkově budu raději, když se to obejde bez papírů.)

Uživatelský avatar
saitt
Příspěvky: 107
Registrován: 11 lis 2015, 01:00
Bydliště: Ostrava

#21 Příspěvek 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

Uživatelský avatar
Jurawood
Příspěvky: 60
Registrován: 31 pro 2008, 01:00

#22 Příspěvek 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

Uživatelský avatar
Le_Ze
Příspěvky: 631
Registrován: 24 črc 2014, 02:00
Bydliště: Ano, mam

#23 Příspěvek 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.

Uživatelský avatar
Habesan
Příspěvky: 6924
Registrován: 12 led 2009, 01:00
Bydliště: Plzeňsko
Kontaktovat uživatele:

#24 Příspěvek 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í.
Sháním hasičák s CO2 "sněhový", raději funkční.
(Nemusí mít platnou revizi.)
(Celkově budu raději, když se to obejde bez papírů.)

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#25 Příspěvek 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.

Uživatelský avatar
Le_Ze
Příspěvky: 631
Registrován: 24 črc 2014, 02:00
Bydliště: Ano, mam

#26 Příspěvek od Le_Ze »

Každý nemůže byt tak šikovný.

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“