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?

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet!