Showing posts sorted by relevance for query arduino-0-1-pin. Sort by date Show all posts
Showing posts sorted by relevance for query arduino-0-1-pin. Sort by date Show all posts

Sunday 1 December 2013

MENERIMA DATA DARI UART DENGAN SISTEM INTERUPSI

SEMANGAT PAGI sobat Blogger, pada kesempatan ini saya akan berbagi lagi nih, cara MENERIMA DATA DARI UART DENGAN SISTEM INTERUPSI. Cara kerja nya sama seperti SISTEM POOLING yaitu menerima data yang di berikan Arduino IDE kepada LCD penerima, TETAPI pada percobaan ini kita akan menggunakan SISTEM INTERUPSI bukan POOLING. Penerima data akan menggunakan BAUDRATE 9600. AYO SIMAK langkah-langkah di bawah ini :
  1. Seperti biasa, sebelum melakukan percobaannya kita harus membuat rangkaiannya. Rangkaian yang harus di buat seperti di bawah ini.
  2. Mari lakukan coding program dengan menggunakan sintaks program di bawah ini.


  3. Setelah selesai, Ayo buka Serial Monitor pada IDE dengan cara Ctrl + M. Pastikan konfigurasi Serial Monitornya Seperti tampilan di bawah ini.
  4. Contoh data yang dikirim IDE dan yang di terima di LCD penerima
  • Teks Yang DikirimkanArduino
    Teks Yang Di TerimaLCD
    Halo
    Halo
    SayaMakanNasi
    SayaMakanNasi
    Hasmar
    Hasmar

    Husein
    Husein
    Harahap
    Harahap
Adapun penjelasan sintaks pemograman di atas adalah sebagai berikut :
  • #include <LiquidCrystal.h>    //memanggil library untuklcd
    #define FOSC 16000000         //menetapkannilai FOSC bernilai 16000000
    LiquidCrystallcd(2, 3, 4, 5, 6, 7); // inisialisasi pin lcd
    String dataSerial;                    //mendekelarasikandataSerialsebagai string
    voidinitSerial(intbaudrate)
    {
    intubrr = FOSC/16/baudrate-1;
    // Mengisi register UBRR0H dan UBRR0L untukmenentukanbaudrate
    UBRR0H |= ubrr>>8;
    UBRR0L |= ubrr;
    // Mengaktifkansaluran transmitter dan receiver
    UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
    // Menggunakan format data 8 bit
    UCSR0C |= (0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);
    // Menggunakan 1 stop bit
    UCSR0C |= (0<<USBS0);
    // No Parity
    UCSR0C |= (0<<UPM01)|(0<<UPM00);
    // Mengaktifkan RX interrupt
    UCSR0B |= (1<<RXCIE0);
    }
    // Rutin yang akandijalankanjikaterjadiinterupsi
    ISR(USART_RX_vect){
    char data = UDR0;
    if(data=='\n')
    {
    lcd.clear();                   // tampilanlcd di hapus
    lcd.setCursor(0,0);      //Menampilkan text padabarispertama LCD
    lcd.print("Incoming Data"); //Menampilkan text “Incoming Data” padabarispertama di LCD
    lcd.setCursor(0,1);      //Menampilkan text padabariskedua LCD
    lcd.print(dataSerial);   //Menampilkan data ygdikirimmelalui serial
    dataSerial = "";
    }
    Else
    {         
    if(data!='\r')                 //jika data tidakada
    {
    dataSerial += data;      //Jikatidakada data makatampilkan text “data”
    }
    }
    }
    void setup()                 //settinganawal program
    {
    initSerial(9600);
    lcd.begin(16,2);           // tampilanlcd (kolom , baris)
    lcd.clear();                   // tampilanlcd di hapus
    sei();
    }
    void loop()                  //program looping
    {
    }

    • Perbedaan antara INTERUPSI dengan POOLING adalah Suatu kondisi yang memicu atau memaksa sitem mikrokontroler untuk menghentikan program utama dan memaksa menjalankan interupsi, SEDANGKAN sitem POOLING adalah kondisi arduino menunggu pengiriman data dari komunikasi serial.


Monday 23 February 2015

HARDWARE :: sensor api pengganti UVtron dan Thermal array


 
UVtron, Thermal Array, IR camera
yaitu pake remotenya nintendo wii.
  

remote wiimote dari nintendo
sensor api paket hemat dari remote wii ini rupanya cuman setengah harga dari UVtron+driver loh (kalo pake harga batam).
  
 
pada bagian depan dari remote ini memiliki kamera infra merah dengan spesifikasi berikut:
1. kamera resolusi 1024×768
2. Up to 4 blob (cahaya IR terang melebihi thresholdnya)
3. 100 proses gambar perdetik
3. interfacing i2c
4. output i2c berupa koordinat dari 4 blob tersebut.
wiring cameranya:
Jika menggunakan crystal quartz (4kaki) :
 
jika menggunakan crystal resonator (2kaki) perhatikan yang didalam kotak ya
 
bentuk jadinya
    
yang keren dari internet, yang tengah / yang jelek itu punya saya
cuman lum dilanjutkan, timahnya habis trus resistor ma capasitor ada dibawah pcb :p
setelah itu tinggal dihubungkan ke arduino dan pasang kaca hitam bawaannya.
jika ingin pakai library arduinonya download PVision.zip  ubah ke ZIP ya
tapi jika gak mau pakai library, ini contoh akses IR kamera nya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// Wii Remote IR sensor  test sample code  by kako
// modified output for Wii-BlobTrack program by RobotFreak
 
#include
 
int IRsensorAddress = 0xB0;
int slaveAddress;
int ledPin = 13;
boolean ledState = false;
byte data_buf[16];
int i;
 
int Ix[4];
int Iy[4];
int s;
 
void Write_2bytes(byte d1, byte d2)
{
    Wire.beginTransmission(slaveAddress);
    Wire.send(d1); Wire.send(d2);
    Wire.endTransmission();
}
 
void setup()
{
    slaveAddress = IRsensorAddress >> 1;   // This results in 0x21 as the address to pass to TWI
    Serial.begin(38400);
    pinMode(ledPin, OUTPUT);      // Set the LED pin as output
    Wire.begin();
    // IR sensor initialize
    Write_2bytes(0x30,0x01); delay(10);
    Write_2bytes(0x30,0x08); delay(10);
    Write_2bytes(0x06,0x90); delay(10);
    Write_2bytes(0x08,0xC0); delay(10);
    Write_2bytes(0x1A,0x40); delay(10);
    Write_2bytes(0x33,0x33); delay(10);
    delay(100);
}
void loop()
{
    ledState = !ledState;
    if (ledState) { digitalWrite(ledPin,HIGH); } else { digitalWrite(ledPin,LOW); }
 
    //IR sensor read
    Wire.beginTransmission(slaveAddress);
    Wire.send(0x36);
    Wire.endTransmission();
 
    Wire.requestFrom(slaveAddress, 16);        // Request the 2 byte heading (MSB comes first)
    for (i=0;i    i=0;
    while(Wire.available() && i < 16) {
        data_buf[i] = Wire.receive();
        i++;
    }
 
    Ix[0] = data_buf[1];
    Iy[0] = data_buf[2];
    s   = data_buf[3];
    Ix[0] += (s & 0x30) <    Iy[0] += (s & 0xC0) <
    Ix[1] = data_buf[4];
    Iy[1] = data_buf[5];
    s   = data_buf[6];
    Ix[1] += (s & 0x30) <    Iy[1] += (s & 0xC0) <
    Ix[2] = data_buf[7];
    Iy[2] = data_buf[8];
    s   = data_buf[9];
    Ix[2] += (s & 0x30) <    Iy[2] += (s & 0xC0) <
    Ix[3] = data_buf[10];
    Iy[3] = data_buf[11];
    s   = data_buf[12];
    Ix[3] += (s & 0x30) <    Iy[3] += (s & 0xC0) <
    for(i=0; i    {
      if (Ix[i] < 1000)
        Serial.print(" ");
      if (Ix[i] < 100)
        Serial.print(" ");
      if (Ix[i] < 10)
        Serial.print(" ");
      Serial.print( int(Ix[i]) );
      Serial.print(",");
      if (Iy[i] < 1000)
        Serial.print(" ");
      if (Iy[i] < 100)
        Serial.print(" ");
      if (Iy[i] < 10)
        Serial.print(" ");
      Serial.print( int(Iy[i]) );
      if (i        Serial.print(",");
    }
    Serial.println("");
    delay(3);
}
sumber:
https://handritoar.wordpress.com/2011/11/28/sensor-api-paket-hemat-tapi-efisien/
.