Arduino - zapojení s potenciometrem a diodou
Moderátor: Moderátoři
Arduino - zapojení s potenciometrem a diodou
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.
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.
- ross4435897
- Příspěvky: 426
- Registrován: 10 lis 2009, 01:00
- Bydliště: Brno
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.jezevec píše:Na to jsi si snad pořizoval arduino, aby ses ty programy naučil sám psát, nebo se pletu...?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...
- jezevec
- Hlavní moderátor
- Příspěvky: 5414
- Registrován: 13 čer 2004, 02:00
- Bydliště: Břeclavsko
- Kontaktovat uživatele:
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.
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.
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/
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
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
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
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
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
- ross4435897
- Příspěvky: 426
- Registrován: 10 lis 2009, 01:00
- Bydliště: Brno
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.
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.
Máš v tom hokej.
Dá se to napsat takto
nebo se to dá napsat i takto:
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:
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.
a nebo si ten pin nějak pojmenuj
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í.
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
}
Kód: Vybrat vše
void setup()
{
pinMode (5,OUTPUT); // nastav pin 5 jako vystup
}
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:
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);
Kód: Vybrat vše
int potenciometr = A0;
void setup()
{
}
void loop()
{
analogRead(potenciometr);
}
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.
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?
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?