·
Rangkailah
rangkaian seperti panduan pada modul
·
Buka
Arduino IDE dan masukan listing program, lalu upload program ke arduino
·
Variasikan
DIPSW_6 dan amati perubahan pada Double Seven Segmen
ada rangkaian di atas, terdapat sepasang arduino dan sebuah double seven segment. Arduino pertama berfungsi sebagai master yang menerima input dari DIPSW_6. Sedangkan Arduino kedua adalah slave atau arduino yang dikontrol. Slave menerima instruksi dari Master dan meneruskannya ke double Seven Segment. Sesuai kondisi yang dipilih dan listing program yang mana setiap 3 switch diaktifkan maka double Seven Segment akan melakukan counting dari 9 sampai 0 secara bergantian di digit 1 dan 2.
a. Master
b. Slave
a. Master//Master Arduino
#include <Keypad.h>
#include <Wire.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'},
};
char rowPins[ROWS] = {13, 12, 11, 10};
char colPins[COLS] = {9, 8, 7};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}
//byte x = 0;
void loop(){
char key = keypad.getKey();
if (key) {
Wire.beginTransmission(4); // transmit to device #4
Wire.write(key);
Wire.endTransmission(); // stop transmitting
}
}
b. Slave
#include <LiquidCrystal.h>
#include <Wire.h>
LiquidCrystal lcd(13, 12, 6, 5, 4, 3); // Sesuaikan pin sesuai dengan koneksi LCD
int receivedData = 0;
void setup()
{
lcd.begin(16, 2);
Wire.begin(4); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
lcd.print("Silahkan Tekan");
}
void loop()
{
delay(100);
}
void receiveEvent(int howMany)
{
receivedData = Wire.read(); // receive byte as a character
Serial.println(receivedData); // print the character
if (receivedData >= '1' && receivedData <= '9') {
int number = receivedData - '0';
lcd.clear();
lcd.setCursor(0, number % 2);
lcd.print(number);
}
}
Tidak ada komentar:
Posting Komentar