 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Pon Jun 10, 2013 12:50 pm Naslov sporočila: Program za prižiganje LED luči s potenciometrom |
|
|
Zdravo
Že dolgo časa, poskušam napisati program za prišiganje led luži s potenciometrom.
Žal še mi do danes vedno ni uspelo.
V kolikor je kdo v c-programskem jeziku napisal tak program, se toplo priporočam.
Uporabljam pickit2 in pic16f690
Hvala za vse  _________________ LP Mico |
|
Nazaj na vrh |
|
 |
tilz0R Član


Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 5.66 Kraj: Črnomelj
|
Objavljeno: Pon Jun 10, 2013 3:21 pm Naslov sporočila: |
|
|
kaj imaš to v mislih s potenciometrom?
Torej, bolj "odpreš" potenciometer, bolj luč sveti? Če je to to, pogooglaj za "PWM" za tvoj PIC pa bo zagotooovo "svega i svašta". _________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Sre Jun 12, 2013 11:57 am Naslov sporočila: Uspel sem napisat program (urediti) |
|
|
Prilagam program za vse ki bi želeli s potenciometrom vklapljat lučke.
Narejeno za pic16f690.
Mam pa še eno vprašanje, kako bi lahko podalšal korak, da bi naprimer od 0-1V svetila 1 led, 1-2V 2 led,... 5V.
Mi lahko kdo pomaga v tem ?
Koda: |
#include <htc.h> //vkljucitev datoteke z definicajimi simbolov
unsigned int read_ad()
{
unsigned int rezultat; // lokalne spremenljivke
GODONE = 1;
while(GODONE==1) ; // cakamo na konec pretvorbe
rezultat=(ADRESL|(ADRESH<<8)); // shranimo vrednost AD pretvorbe
return(rezultat); // vrne rezultat
}
void init_io(void)
{
TRISA=0b00000010; // RA1=analogni vhod
TRISB=0;
TRISC=0; // izhodi(RC0,RC1,RC2,RC3)
PORTB=0;
ADCON0=0b00000111; // nastavitev A/D
ADCON1=0b00100000; // Fosc/32
}
void main()
{
init_io();
unsigned int potencio; // lokalne spremenljivke
while (1)
{
potencio=read_ad();
if(potencio>0&&potencio<127)
RC0=1;
if(potencio>128&&potencio<255)
RC1=1;
if(potencio>256&&potencio<511)
RC2=1;
if(potencio>512&&potencio<1023)
RC3=1;
}
}
Hvala |
_________________ LP Mico |
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 16.00
|
Objavljeno: Sre Jun 12, 2013 12:57 pm Naslov sporočila: |
|
|
Če ti dela približno tako, kot želiš, potem to narediš v tvojih IF stavkih. Namesto ene LED npr. druge, v IF stavku za preverbo vrednosti AD med 256 in 511 vključiš prvo in drugo LED, ne samo drugo {RC1=1; RC2=1;} Seveda, če sem prav zastopil tvojo željo.
Ampak mislim, da ti ne dela prav. Kajti, princip si malce narobe zastavil
Če mora svetiti prva LED, prižgi prvo, ostale pa izključi (ti tega ne narediš). Torej jih ne ugašaš takrat, ko je to potrebno in potem ostanejo vključene.
Aja, pa še nekaj sem opazil. V IF stavku preverjaš npr potencio >128 in <255, v naslednjem pa >256 in <511. Kaj pa če nastaviš potenciometer na ==255 ali ==256? Kaj bo svetilo? Predlagam ti torej eno preverbo vrednosti tipa npr >= ali <= |
|
Nazaj na vrh |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Čet Jun 13, 2013 11:42 am Naslov sporočila: |
|
|
Žal ne dela, ne eno in ne drugo.
Nevem kaj bi lahko bilo narobe  _________________ LP Mico |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|