Oleh karena Semester 2 tidak ada ulangan dan penilaian maka nilai sama seperti semester 1 untuk semester 2 ini.
File Excel dapat di download disini
/*Program untuk Smart Lamp V1.4 dengan IC Atmega8 SMD * Kendali Melalui Tombol Dan Serial (Bluetooth) * mengendalikan nyala on Off serta Tingkat kecerahan * daftar perintah seria * A = ON Semua * a = Off semua * B = Increase PwmA * b = Decrease PwmA * C = Increase PwmB * c Decrease PwmB * D = Kedip * d = Release Kedip * Program di buat Oleh : Wahyu Arief Budiman * Hp : 085643496555 * Blog : Hobbykendaraanlistrik.blogspot.com * email : arief@smkn1seyegan.com */ #define ON 1 #define OFF 0 const int LampB = 9; const int LampA = 10; const int Up = 2; const int Down = 3; const int Menu = 4; const int D5 = 5; const int D6 = 6; int PwmA; int PwmB; int TombolUp = 0; int TombolDown = 0; int TombolMenu = 0; int Kedip = 0; char HC06; void setup() { Serial.begin(9600); Serial.println(F("Smart Lamp1.4")); pinMode(LampA, OUTPUT); digitalWrite(LampA, OFF); pinMode(LampB, OUTPUT); digitalWrite(LampB, OFF); pinMode(Up, INPUT); pinMode(Down, INPUT); pinMode(Menu, INPUT); digitalWrite(LampA, OFF);delay(300);digitalWrite(LampA, ON);delay(300);digitalWrite(LampA, OFF);delay(900); digitalWrite(LampB, OFF);delay(300);digitalWrite(LampB, ON);delay(300);digitalWrite(LampB, OFF);delay(900); PwmA = 100; PwmB = 100; analogWrite(LampA,PwmA); analogWrite(LampB, PwmB); Kedip = 0; } void loop() { // put your main code here, to run repeatedly: BacaBluetooth(); BacaTombol(); Lampu(); } void BacaBluetooth(){ if(Serial.available()>0) { HC06 = Serial.read(); if (HC06 =='A'){digitalWrite(LampA,ON); digitalWrite(LampB,ON); PwmA = 255; PwmB = 255;Kedip = 0; Serial.println("ON Semua");} if (HC06 =='a'){digitalWrite(LampA,OFF); digitalWrite(LampB,OFF); PwmA = 0; PwmB = 0;Kedip = 0; Serial.println("Mati Semua");} if (HC06 =='B'){ PwmA+=10; if (PwmA>=256){PwmA=255;} Serial.println(PwmA);} if (HC06 =='b'){ PwmA-=10; if (PwmA<=0){PwmA=0;} Serial.println(PwmA);} if (HC06 =='C'){ PwmB+=10; if (PwmB>=256){PwmB=255;} Serial.println(PwmB);} if (HC06 =='b'){ PwmB-=10; if (PwmB<=0){PwmB=0;} Serial.println(PwmB);} if (HC06 =='D'){ Kedip = 300; Serial.println("Berkedip");} if (HC06 =='d'){ Kedip = 0; Serial.println("Tidak Kedip");} } } void BacaTombol(){ TombolUp = digitalRead(Up); TombolDown = digitalRead(Down); TombolMenu = digitalRead(Menu); if(TombolUp == LOW){PwmA++;PwmB++; if (PwmA>=256){PwmA=255;}; if (PwmB>=256){PwmB=255;}; delay(50);} if(TombolDown == LOW){PwmA--;PwmB--; if (PwmA<=0){PwmA=0;}; if (PwmB<=0){PwmB=0;}; delay(50);} if(TombolMenu == LOW){Kedip = 300;} if(TombolMenu == LOW && TombolDown == LOW){Kedip = 0;} } void Lampu(){ analogWrite(LampA,PwmA); analogWrite(LampB, PwmB); delay(Kedip); analogWrite(LampA,0); analogWrite(LampB, 0); delay(Kedip); }
// ----------------------------------------------- // Program Untuk EPS Module Kontroller Avanza Dengan Hall Torque Sensor Tipe OH49E ratio Metric // Abaikan Speed Sensor /* Catatan saja Untuk mencatat Bagian bagian yang perlu dicatat Versi 2.1 * Menggunkaan LCD I2C dengan alamat 0x27 atau 0X3F dengan 20 x 4 * IC Atmega8/88/168/328 * pembacaan baterai 222 adalah 12.40 volt dan 293 adalah 16.30 volt * posisi torque sensor (TS) saat tidak terkena magnet (Dilepas dari poros) * TS1 (sensor0) adalah yang bawah/ TS2 (sensor1) adalah yang atas * Dipasang Pada Daihatsu Caharde dengan Hall Sensor OH49E * Kiri Lurus Kanan Lepas * TS1 = 440 TS1 = 470 TS1 = 500 TS1 = 0 * TS2 = 484 TS2 = 453 TS2 = 422 TS2 = 1021 * Saat Sensor Dilepas Dari Socket ECU TS1 = 358 ; TS2 = 427 (dipengaruhi tegangan baterai) * arus = ADC 0 belum sempat ta hitung * jika putaran dinamo terbalik, balik aja polaritasnya * Program di buat Oleh : Wahyu Arief Budiman * Hp : 085643496555 * Blog : Hobbykendaraanlistrik.blogspot.com * email : arief@smkn1seyegan.com */ // ----------------------------------------------- #include <Wire.h> #include <LiquidCrystal_I2C.h> #define ON 1 #define OFF 0 LiquidCrystal_I2C lcd(0x27, 20, 4);//0x27 dapat di ganti dengan 0x3F sesuaikan LCD I2C const int MotorD4 = 4; const int MotorD5 = 5; const int MotorPWM = 6; int PWM = 255; const int TorqueSensor0 = A0; int Sensor0 = 0; const int TorqueSensor1 = A1; int Sensor1 = 0; const int ArusSensor = A2; int Arus = 0; const int BateraiSensor = A3; float Baterai = 0; unsigned int Selisih; int JumlahTorqueSensor; int KalibrasiSensor0; int KalibrasiSensor1; void setup() { Serial.begin(9600); Serial.println(F("Module Kontroller EPS Avanza")); pinMode(MotorD4, OUTPUT); digitalWrite(MotorD4, OFF); pinMode(MotorD5, OUTPUT); digitalWrite(MotorD5, OFF); pinMode(MotorPWM, OUTPUT); analogWrite(MotorPWM, PWM); pinMode(TorqueSensor0, INPUT); pinMode(TorqueSensor1, INPUT); pinMode(ArusSensor, INPUT); pinMode(BateraiSensor, INPUT); lcd.begin(); lcd.backlight(); lcd.clear(); lcd.setCursor(0, 0); lcd.print(" OTOTRONIK "); delay (1000); lcd.setCursor(0, 1); lcd.print("MODULE EPS V 2.1"); delay (1000); lcd.setCursor(0, 0); lcd.print(" Dibuat Oleh :"); delay (1000); lcd.setCursor(0, 1); lcd.print("Wahyu Arief B "); delay (3000); lcd.clear(); TCCR0B = TCCR0B & B11111000 | B00000010; // setPwmFrequency(6,3); } void loop() { BacaTorqueSensor(); BacaArus(); BacaBaterai(); GerakanMotor(); TampilLCD(); } void BacaTorqueSensor() { Sensor0 = analogRead(TorqueSensor0); Sensor1 = analogRead(TorqueSensor1); JumlahTorqueSensor = Sensor0 + Sensor1; Serial.print("Torque Sensor = "); Serial.print(Sensor0); Serial.print(" ___ "); Serial.print(Sensor1); } void BacaArus() { Arus = analogRead(ArusSensor); Serial.print("Sensor Arus = "); Serial.print(Arus); Serial.println(); //delay(1); } void BacaBaterai() { Baterai = analogRead(BateraiSensor); Baterai = Baterai/17.9; Serial.print("Tegangan Baterai = "); Serial.print(Baterai); Serial.println(); //delay(1); } void GerakanMotor() { //Gerakan Motor Putar kanan if (Sensor0 > 490 && Sensor1 < 432) {//lakukan kalibrasi pada bagian ini dan sesuaikan angkanya Selisih = Sensor0 - Sensor1; PWM = map(Selisih, 0, 211, 0, 255); PWM = 255 - PWM; if (PWM<=0){PWM=0;} digitalWrite(MotorD4, ON); digitalWrite(MotorD5, OFF);delay(5); analogWrite(MotorPWM, PWM);delay(1); Serial.print("Putar Kanan"); Serial.println(); //delay(5); } //void GerakanMotorKiri() { if (Sensor0 < 450 && Sensor1 > 473 && Sensor1 < 900) {//lakukan kalibrasi pada bagian ini sesuaikan angkanya digitalWrite(MotorD4, OFF); digitalWrite(MotorD5, ON);delay(5); Selisih = Sensor1 - Sensor0; PWM = map(Selisih, 0, 150, 0, 255); PWM = 255 - PWM; if (PWM<=0){PWM=0;} analogWrite(MotorPWM, PWM);delay(1); Serial.print("Putar Kiri"); Serial.println(); //delay(5); } //void GerakanMotorBerhenti() { if ((Sensor0 >= 463 && Sensor0 <=483)||(Sensor1 >=443 && Sensor1 <=463)){ //ubah nilai ini sesuai kalibrasi PWM = 255; analogWrite(MotorPWM, PWM);delay(10); digitalWrite(MotorD4, OFF); digitalWrite(MotorD5, OFF); Serial.print("Berhenti"); Serial.println(); delay(1);} //Sensor Lepas if (Sensor0 <20 && Sensor1 >929){ digitalWrite(MotorD4, OFF); digitalWrite(MotorD5, OFF); PWM = 255; analogWrite(MotorPWM, PWM); Serial.print("TORQUE SENSOR ERROR");delay(1000); Serial.println(); delay(5); lcd.setCursor(0, 1); lcd.print("SENSOR E UCUL!!!"); delay(1000); lcd.clear(); } } void TampilLCD(){ //lcd.clear(); lcd.setCursor(0, 0); lcd.print(Sensor0); //delay (1); lcd.setCursor(4, 0); lcd.print(Sensor1); //delay (1); lcd.setCursor(8, 0); lcd.print(Baterai); //delay (1); lcd.setCursor(12, 0); lcd.print(" "); lcd.setCursor(14, 0); lcd.print(" "); lcd.setCursor(13, 0); lcd.print(Arus); //delay (1); lcd.setCursor(0, 1); lcd.print("TS1 TS2 Bat"); //delay (1); lcd.setCursor(13, 1); lcd.print(PWM); lcd.setCursor(0, 3); lcd.print("TQ TQ PWM Gap"); }