Arduino - zapojení s potenciometrem a diodou

Měřáky, automatizační technika, regulační technika

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
arduino
Příspěvky: 30
Registrován: 25 pro 2014, 01:00

Arduino - zapojení s potenciometrem a diodou

#1 Příspěvek od arduino »

Ahoj, mám A-Uno, a potřebuji jako předlohu program, který by mi umožňoval pomocí potenciometru řídit svit diody (ať už ve smysly 100% svitu, anebo neaktivity, anebo ve smyslu postupného rozsvícení).

Zkoušel jsem na netu najít nějaké předlohy, ale pro tento typ Arduina jsem nikdy nic nenašel. A taky potřebuji poradit, jak připojit diodu - toto je pro jinou verzi, a není mi jasné, kam mám na Unu připojit ten zelený vodič. http://www.itnetwork.cz/images/3391/ard ... schema.png

Děkuji.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#2 Příspěvek od ross4435897 »

precti si priklady pro:
analogread
analogwrite

Uživatelský avatar
jezevec
Hlavní moderátor
Hlavní moderátor
Příspěvky: 5414
Registrován: 13 čer 2004, 02:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#3 Příspěvek od jezevec »

arduino píše:Ahoj, mám A-Uno, a potřebuji jako předlohu program, který by mi umožňoval pomocí potenciometru řídit svit diody...
Na to jsi si snad pořizoval arduino, aby ses ty programy naučil sám psát, nebo se pletu...?

Uživatelský avatar
Jirka525
Příspěvky: 325
Registrován: 22 kvě 2013, 02:00
Bydliště: Psáry JN79GW

#4 Příspěvek od Jirka525 »

Napiš jakou máš desku a jaký je na ní procesor. Případně pošli schéma. Pak to dáme dohromady.
Jirka
Jirka

Uživatelský avatar
arduino
Příspěvky: 30
Registrován: 25 pro 2014, 01:00

#5 Příspěvek od arduino »

jezevec píše:
arduino píše:Ahoj, mám A-Uno, a potřebuji jako předlohu program, který by mi umožňoval pomocí potenciometru řídit svit diody...
Na to jsi si snad pořizoval arduino, aby ses ty programy naučil sám psát, nebo se pletu...?
Nepopírám, ale prostě když uvidím hotový program, tak se z něj daleko snáz naučím, jak si pak napsat vlastní... ty taky, když jsi začínam, třeba s bastlením, tak jsi určitě nejdřív něco rozebral, a zkusil sis z toho odvodit funkci.

Uživatelský avatar
jezevec
Hlavní moderátor
Hlavní moderátor
Příspěvky: 5414
Registrován: 13 čer 2004, 02:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#6 Příspěvek od jezevec »

To platí u bastlení, ale neřekl bych, že i u programování. Tady ti jako začátečníkovy moc nepomohou, pokud nejsou psány jako výukové a bohatě komentované, cizí programy. A stažené hex jsou jako učební úplně k ničemu.
Musíš pochopit, jak procesor pracuje a to se naučíš jen vlastním programováním. Třeba pro začátek jen tlačítkem rozsvítit LEDku.

Uživatelský avatar
dreamer
Příspěvky: 380
Registrován: 22 říj 2014, 02:00

#7 Příspěvek od dreamer »

Právě těch jednoduchých příkladů je přímo v Arduino IDE poměrně velká spousta (Examples) a velice dobře okomentovaných - jen ti nesmí překážet angličtina. Další spoustu příkladů najdeš přímo na stránkách www.arduino.cc případně zkus www.arduino.cz www.duinozone.cz (dnes stránky nefungují ale ještě před několika dny nebyl problém) případně http://arduino8.webnode.cz/

Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#8 Příspěvek od Honza_dy »

a) proč nepokračuješ v původním vlákně které si založil?
b) na googlu je velká spousta studijního materiálu nehledě na česky psanou knihu, kterou postoval alkom01.
c) Nejlépe se naučíš, když si program zkusíš modifikovat a koukat co to udělá. Procesoru neublížíš, v nejhorším případě ti překladač vynadá. To na co jsi se ptal je deklarace proměnné, zkus si o tom něco najít. Pokud neovládáš angličtinu alespoň v základech, jsi nahranej. V češtině toho opravdu moc není.
Já jsem taky samouk. Tady je jeden z mých prvních prográmků, kterým jsem se s arduinem seznamoval. Dost poctivě jsem ho okomentoval, tak se na něj koukni a studuj.
P.S. Teď jsem si to s odstupem času taky prošel a je to napsané strašně prasácky :oops:

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#9 Příspěvek od frpr666 »

Posílám příklad na AnalogRead a knihovnu FlexiTimer2 a Dbg.
Jsou k stáhnutí na http://playground.arduino.cc/Main/LibraryList
Čte hodnotu A0, A1 a zapisuje jako číslo na uart/usb
Odzkoušeno s Ard. mega 2560 :D

Kód: Vybrat vše

// - - - - - - - - - - - - - - - 
// file: analog1.ino
// reading A0, A1 value every second
//
// - - - - - - - - - - - - - - - 

#include <FlexiTimer2.h>
#include <Dbg.h>

#define BREAD(_byte,_bitmask) ((_byte)&(_bitmask))

// Switch on LED on pin 13 each second
volatile uint8_t time;
uint8_t time_ip;
uint8_t time_hf;
uint8_t temp;
uint16_t ad_ch0, ad_ch1;

// - - - - - - - - - - - - - - - 
void flash()
{
  time++;
}

// - - - - - - - - - - - - - - - 
void setup()
{
  pinMode(13, OUTPUT);
  pinMode(0, INPUT);
  pinMode(1, INPUT);

  FlexiTimer2::set(500, flash); // 500ms period
  FlexiTimer2::start();

  Debug.begin(1,9600);
}

// - - - - - - - - - - - - - - - 
void loop()
{
  {
    temp = time;
    time_ip = (~temp) & time_hf;
    time_hf = temp;
  }

  if (BREAD(time_hf,0x01))
  {
    digitalWrite(13, HIGH);
  }
  else
  {
    digitalWrite(13, LOW);
  }
 
  if (BREAD(time_ip,0x01))
  {
    ad_ch0 = analogRead(A0);
	
    ad_ch1 = analogRead(A1);	
	
	dbg("%d\t%d", ad_ch0, ad_ch1);
  }
   
}
// - - - - - - - - - - - - - - - 
// EOF


Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#10 Příspěvek od Honza_dy »

Paráda, tímhle jsi ho poslal přímo do pekla. Teď už jenom hodit arduino do záchodu a spláchnout.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#11 Příspěvek od ross4435897 »

Je to vazne tak tezke?
analogRead()
analogWrite()

Uživatelský avatar
arduino
Příspěvky: 30
Registrován: 25 pro 2014, 01:00

#12 Příspěvek od arduino »

To na co jsi se ptal je deklarace proměnné, zkus si o tom něco najít.

Mě nebaví číst tuny sraček, ze kterejch je polovina stejně blbě, když se to dá odbýt pár větama.

Ano, prostě nějak musím nadeklarovat informace, které ta proměnná definuje. Podle toho, co sem odpozoroval, to funguje asi tak, že si pojmenuju port č.5 červená (podle progamu "int cervena = 5 ; //určenie premennej cervena na pin 5") a pak ho (ten odkaz) přiřadím na místo, kde má něco udělat.

Prostě taková substituce, jako u řešení matematických rovnic.

Jen nevím, jak tomu programu mám nabindovat, CO na tom vstupu má hledat. Když tam chci mít např. poťák, co ty diody bude řídit, musím nějak na ten analogový vstup nabindovat, při jaké úrovni (při jaké poloze jezdce poťáku) napětí má sepnout tu diodu. To nevím.

Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#13 Příspěvek od Honza_dy »

Máš v tom hokej.
Dá se to napsat takto

Kód: Vybrat vše

int cervena = 5; // celociselna hodnota 5 ma od ted prezdivku cervena

void setup()
{
pinMode (cervena, OUTPUT); // nastav pin 5 jako vystup
}
nebo se to dá napsat i takto:

Kód: Vybrat vše

void setup()
{
pinMode (5,OUTPUT); // nastav pin 5 jako vystup
}
tyto dva kódy jsou si rovnocené.

To že si něco pojmenuješ, ještě nic neznamená. Důležité je nastavení ve funci setup().
Ještě jinak. Rozepíšu to pod sebe

int - definice datového typu v tomto případě integer
cervena - přezdívka pod kterou bude toto číslo (promněnná) vystupovat v programu
= rovnítko
5 - číselná hodnota proměnné.

Z toho vyplývá že cervena = 5

Chápeš to trošku?

Co se týče čtení analogového signálu z potenciometru, k tomu slouží právě příkaz analogRead(). Procesor umí číst spojitý signál pouze na šesti pinech, které jsou pevně dané. Kromě toho lze tyto piny použít i jako digitální vstupy a výstupy.
Co který pin znamená je hezky znázorněno na tomto obrázku:
Obrázek
Funkci analogRead musíme pouze říct , ze kterého pinu má číst. To uděláme tak, že název pinu vepíšeme jako parametr do závorek.

Kód: Vybrat vše

 analogRead(A0);
a nebo si ten pin nějak pojmenuj

Kód: Vybrat vše

int potenciometr = A0;

void setup()
{

}

void loop()
{
analogRead(potenciometr);
}
funkce vrátí hodnotu z AD převodníku v rozsahu 0 - 1023. Jak převodník funguje zde popisovat nebudu, o tom si přečti tunu sraček.

Následně musíme nějak rozhodnout kdy se má ledka vlastně ropzsvítit což se dělá podmínkou if. Řekněme, že ledka se rozsvítí v polovině dráhy potenciometru.
Edit: Než jsem do klávesnice vyzvracel svoje myšlenkové pochody, tak se zde objevil semafor. Pokračovat budu na případné přání.
Naposledy upravil(a) Honza_dy dne 31 pro 2014, 17:21, celkem upraveno 2 x.

Uživatelský avatar
arduino
Příspěvky: 30
Registrován: 25 pro 2014, 01:00

#14 Příspěvek od arduino »

Ahoj, nakonec sem vzal tento příklad:

http://arduino.sk/viewtopic.php?f=3&t=1 ... a4fbfd40c0

a zapojil ho podle tohoto schématu, s použitím A-Nano.

http://img24.cz/images/28113185579979066280.jpg

Je to vše v pořádku? Tlačítko na poruchový stav sem nezapojil, neexsituje. Bude to fungovat?

Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#15 Příspěvek od Honza_dy »

Snažíš se alespoň trošku přemýšlet, nebo bezhlavě opajcuješ nějaký kód a potom se ptáš jiných jestli to bude fungovat?
Co má semafor společného se čtením polohy potenciometru?

Odpovědět

Zpět na „Měření, regulace a automatizace“