PWM kimenet példaprogram

Ez a példaprogram semmi értelmeset nem csinál. Csupán azt demonstrálja, hogy hat különböző kivezetésen hogyan lehet különböző kitöltési tényezőt (LED esetén fényerőt) beállítani. Az is látható, hogy mennyivel egyszerűbb az Arduino C program. A BASCOM-ban ismerni kell a PWM használatához a beépített időzítő áramkörök működését, míg az Arduino C-ben ezekről nem is kell tudni, hogy vannak.

Az áramkört nem rajzoltam meg, mert még mindig nem tanultam meg egyetlen áramkör rajzoló program használatát sem. Bocs! Azonban a digitális ki és bemenet példaprogramjában található kapcsolási rajznak és instrukcióknak elegendőnek kell lenni, hogy magadtól is megcsináld. Kell 6 db led, 6 db ellenállás és vezetékek. Akár használhatod az ott található kapcsolást is, csak a programot kell átalakítani, és egyetlen kivezetésen állítgatni a fényerőt.

Arduino C pédaprogram:

byte f=0;  		//dekleráltunk egy F nevű változót (fényerő „F”el)
byte l=0; 		//deklaráltunk egy L nevű változót (fényerő „L”e)

void setup() 
{
  pinMode(6,OUTPUT);	//Arduino Uno R3 6-os kivezetés kimenet
  pinMode(5,OUTPUT); 	//Arduino Uno R3 5-os kivezetés kimenet
  pinMode(9,OUTPUT); 	//Arduino Uno R3 9-os kivezetés kimenet
  pinMode(10,OUTPUT); 	//Arduino Uno R3 10-os kivezetés kimenet
  pinMode(11,OUTPUT); 	//Arduino Uno R3 11-os kivezetés kimenet
  pinMode(3,OUTPUT); 	//Arduino Uno R3 3-os kivezetés kimenet
}

void loop() 
{
  analogWrite(6,255);	//max fényerő
  analogWrite(5,255);  	//max fényerő
  analogWrite(9,0);  	//0 fényerő
  analogWrite(10,0);  	//0 fényerő
  analogWrite(11,f);  	//folyamatosan nő a fémyerő
  analogWrite(3,l);  	//folyamatosan csökken a fényerő
  f=f+8;			//’F értékét növeljük 5-el. Mivel byte típusú ciklikusan
//növekszik és nulláról újraindul
  l=l-8;			//’L értékét csökkentjük 5-el. Mivel byte típusú folyamatosan
//csökken, és átfordul
  delay(100);		//100msec-et várakozunk	
  analogWrite(6,128);	//fél fényerő
  analogWrite(5,55);  	//55/256 fényerővel világít
  analogWrite(9,5);  	// nagyon halványan világít
  analogWrite(10,255);	// teljes fényerővel világít
  delay(100);  	   	//100msec-et várakozunk
}

BASCOM példaprogram:

$regfile = "m328pdef.dat"
$crystal = 16000000
Dim F As Byte		’dekleráltunk egy F nevű változót (fényerő „F”el)
Dim L As Byte		’deklaráltunk egy L nevű változót (fényerő „L”e)
F = 0				’kezdőérték beállítás
L = 0				’kezdőérték beállítás
Config Portd.6 = Output         	'timer0 a comparátorhoz tartozó kimenet 
’(Arduino Uno R3 6-os kivezetés)
Config Portd.5 = Output         	'timer0 b comparátorhoz tartozó kimenet 
’(Arduino Uno R3 5-ös kivezetés)
Config Portb.1 = Output         	'timer1 a comparátorhoz tartozó kimenet 
’(Arduino Uno R3 9-es kivezetés)
Config Portb.2 = Output         	'timer1 b comparátorhoz tartozó kimenet 
’(Arduino Uno R3 10-es kivezetés)
Config Portb.3 = Output         	'timer2 a comparátorhoz tartozó kimenet 
’(Arduino Uno R3 11-es kivezetés)
Config Portd.3 = Output         	'timer2 b comparátorhoz tartozó kimenet 
’(Arduino Uno R3 3-as kivezetés)
  Config Timer0=Pwm , Compare_a_pwm=Clear_down , Compare_b_pwm=Clear_down , Prescale=64
  Config Timer1=Pwm , Compare_a_pwm=Clear_up , Compare_b_pwm=Clear_up , Prescale=64
  Config Timer2=Pwm , Compare_a_pwm=Clear_up , Compare_b_pwm=Clear_up , Prescale=64
  Reset Portb.4
  Do
     Pwm0a = 0                           	'mivel clear_down, teljes fényerővel világit
     Pwm0b = 0                           	'mivel clear_down, teljes fényerővel világit
     Pwm1a = 0                           	'mivel clear_up, nulla fényerővel világit
     Pwm1b = 0                           	'mivel clear_up, nulla fényerővel világit
     Pwm2a = F                           	'mivel clear_up, folyamatosan nő a fényerő
     Pwm2b = L                           	'mivel clear_up, folyamatosan csökken a fényerő
     F = F + 8		    	’F értékét növeljük 5-el. Mivel byte típusú 
’ciklikusan növekszik és nulláról újraindul
     L = L – 8		    	’L értékét csökkentjük 5-el. Mivel byte típusú
’folyamatosan csökken, és átfordul
     Waitms 100		   	’100msec-et várakozunk
     Pwm0a = 128                        	'mivel clear down,fél fényerővel világít
     Pwm0b = 200                        	'mivel clear down,(255-200)/255 fényerővel világít
     Pwm1a = 5                           	'mivel clear_up, nagyon halványan világít
     Pwm1b = 255                        	'mivel clear_up, teljes fényerővel világít
     Waitms 100                          	'100msec-et várakozunk
  Loop
  End

Ha sorban haladsz a tudnivalókkal, akkor most az analóg bemenet használata következik!

Mennyire volt hasznos amit olvastál? Értékelés után szövegesen is leírhatod megjegyzéseidet és véleményedet!

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet! Ha kérdésed van, ne felejtsd el megadni az email címedet!