/* Hello Wokwi!
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("Hello, Wokwi!");
}*/
int AKL=2;
int CLK=3;
int DTA=4;
int TIME=1000;
void setup(){
pinMode(CLK, OUTPUT);
pinMode(DTA, OUTPUT);
digitalWrite(AKL, LOW);
digitalWrite(CLK, HIGH);
digitalWrite(DTA, HIGH);
}
void loop() {
delay(TIME*2);
// start condition
start(DTA,CLK,TIME);
// data transmission
// bit 1 (MSB)
writeZero(DTA,CLK,TIME);
// bit 2
writeZero(DTA,CLK,TIME);
// bit 3
writeOne(DTA,CLK,TIME);
// bit 4
writeZero(DTA,CLK,TIME);
// bit 5
writeZero(DTA,CLK,TIME);
// bit 6
writeOne(DTA,CLK,TIME);
// bit 7
writeOne(DTA,CLK,TIME);
// bit 8 (LSB)
writeOne(DTA,CLK,TIME);
//stop condition
stop(DTA,CLK,TIME,AKL);
}
void start(int d,int c,int t){
digitalWrite(d, LOW);
delay(t/6);
digitalWrite(c, LOW);
delay(t);
}
void stop(int d,int c,int t,int a){
int temp;
pinMode(d, INPUT);
delay(t/6);
digitalWrite(c, HIGH);
delay(t/3);
temp=digitalRead(d);
if(temp==1){
digitalWrite(a, LOW);
}else{digitalWrite(a, HIGH);}
delay(t/6);
delay(t/3);
digitalWrite(a, LOW);
pinMode(d, OUTPUT);
}
void writeOne(int d,int c,int t){
digitalWrite(d, HIGH);
delay(t/6);
digitalWrite(c, HIGH);
delay(t/3);
digitalWrite(c, LOW);
delay(t/6);
digitalWrite(d, LOW);
delay(t/3);
}
void writeZero(int d,int c,int t){
delay(t/6);
digitalWrite(c, HIGH);
delay(t/3);
digitalWrite(c, LOW);
delay(t/6);
delay(t/3);
}