Apa mungkin Liblary
arduino di gunakan di codevision?? Tentu saja mungkin, tetapi jika hanya di
copas code dari arduino ke Cavr ada kemungkinan error karna fungsi bawaan yang
di buat masing2 software agak berbeda. Tapi kalo ditiru pasti bias,, Contohnya untuk
progam INPUT/OUTPUT di arduino, mari kita belajar bersama..
Pada pin arduino lebih di kenal D0,D1…..D13 , dan A0-A15
untuk pin analog. Gambar di bawah ini adalah mapping pin arduino dengan atmega
8/168/328.
 |
sumber klik
Pada Codevision AVR biasa di tulis dengan instruksi DDRD,PORT dan PIN.
D
Pada kesempatan Kali ini fungsi digitalWrite (output),
digitalRead(baca Input),pinMode (setting I/0) akan di tulis di Codevision Avr..
berikut contoh progam untuk membaca input dan mengeluarkan output.
1: #include <mega168.h> // atau mega8.h
2: #include <delay.h>
3: #define LOW 0
4: #define HIGH 1
5: #define OUTPUT 1
6: #define INPUT 0
7: #define INPUT_PULLUP 2
8: unsigned char digitalRead(unsigned char P) {
9: if (P>=0 && P<=7){if(PIND & (1 << P)){
10: return HIGH;}else{return LOW;}}
11: else if (P>=8 && P<=13){if(PINB & (1 << P-8)) {
12: return HIGH;}else{return LOW;}}
13: else if (P>=14 && P<21){if(PINC & (1 << P-14)){
14: return HIGH;}else{return LOW;}} }
15: /*************************************************************/
16: void digitalWrite(unsigned char P,unsigned char ST) {
17: if(P>=0 && P<=7){if(ST == HIGH){(PORTD |= (1 << P))}
18: else{ (PORTD &= ~(1 << P)); }}
19: else if (P>=8 && P<=13){if(ST == HIGH){
20: (PORTB |= (1 << P-8)); }else{ (PORTB &= ~(1 << P-9)); }}
21: else if (P>=14){if(ST == HIGH){
22: (PORTC |= (1 << P-14)); }else{ (PORTC &= ~(1 << P-14)); }}}
23: /*************************************************************/
24: void pinMode(unsigned char P,unsigned char ST) {
25: if(P>=0 && P<=7){ if(ST == OUTPUT){ DDRD|= (1 << P); }
26: else{DDRD &= ~(1 << P); if(ST==INPUT_PULLUP){PORTD|=(1<<P);}}}
27: else if(P>=8 && P<14){if(ST == OUTPUT){ DDRB|= (1 << P-8); }
28: else{DDRB &= ~(1 << P-8);if(ST==INPUT_PULLUP){PORTB|=(1<<P-8);}}}
29: else if(P>=14 && P<21){if(ST == OUTPUT){DDRC |=(1 << P-14); }
30: else{DDRC &= ~(1 << P-14);if(ST==INPUT_PULLUP){PORTC|=(1<<P-14);}}}}
31: /*************************************************************/
32: void main(void){
33: // setting I/O
34: pinMode(0,INPUT_PULLUP);
35: pinMode(1,OUTPUT);
36: while(1) // LOOPING
37: {
38: if(digitalRead(0)==LOW){
39: digitalWrite(1,HIGH);
40: }
41: if(digitalRead(0)==HIGH){
42: digitalWrite(1,LOW);
43: }
44: }
45: }
Penjelasan
pinMode(0,INPUT_PULLUP);
membuat pin D0 sebagai Input dan di beri PULLUP INTERNAL.
pinMode(1,OUTPUT);
membuat pin D1 sebagai output.
if(digitalRead(0)==LOW){digitalWrite(1,HIGH);
jika pin D0 diberi LOW, maka pin D1 bernilai HIGH.
if(digitalRead(0)==HIGH){digitalWrite(1,LOW);}
jika pin D0 diberi HIGH, maka pin D1 bernilai LOW.
Sekian, Semoga bermanfaat ya…
|
Tidak ada komentar :
Posting Komentar