Rabu, 14 November 2018
sensor pendeteksi banjir
#define trigPin 7
#define echoPin 6
#define ledaman 8
#define led1 9
#define led2 10
#define led3 11
void setup() {
Serial.begin (505200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledaman, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if(distance>=16) {
digitalWrite(ledaman, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
else {
digitalWrite(ledaman, LOW);
}
if(distance <= 15) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
if(distance < 10) {
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
}
if(distance < 5) {
digitalWrite(led3, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
}
delay(500);
}
buka pintu dengan kartu acces
//Viral Science
//RFID
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 4 //define green LED pin
#define LED_R 5 //define red LED
#define BUZZER 2 //buzzer pin
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
Servo myServo; //define servo name
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
myServo.attach(3); //servo pin
myServo.write(0); //servo start position
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "83 23 38 BB") //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
myServo.write(180);
delay(5000);
myServo.write(0);
digitalWrite(LED_G, LOW);
}
else {
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(1000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
}
//RFID
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 4 //define green LED pin
#define LED_R 5 //define red LED
#define BUZZER 2 //buzzer pin
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
Servo myServo; //define servo name
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
myServo.attach(3); //servo pin
myServo.write(0); //servo start position
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "83 23 38 BB") //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
myServo.write(180);
delay(5000);
myServo.write(0);
digitalWrite(LED_G, LOW);
}
else {
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(1000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
}
line follower
Line follower robot
adalah sebuah robot yang dapat mengikuti garis secara otomatis. Robot didukung
oleh rangkain komponen elektronika yang dilengkapi dengan roda dan digerakan
oleh motor. Pengendalian kecepatan sangat bergantung pada batas putaran dan pergesekan
antara ban robot dengan lantainya. Robot tersebut dirancang untuk bernavigasi
dan bergerak secara otomatis mengikuti sebuah alur garis yang dibuat.
Untuk membaca garis, robot dilengkapi dengan sensor yang diletakkkan diujung depan dari robot tersebut. Line follower robot ini memiliki jenis dan bentuk serta memiliki beberapa sistem penggerak dan pengendali sebagai pengatur kinerja yang beraneka ragam sesuai dengan kreatifitas pembuatnya.
Untuk membaca garis, robot dilengkapi dengan sensor yang diletakkkan diujung depan dari robot tersebut. Line follower robot ini memiliki jenis dan bentuk serta memiliki beberapa sistem penggerak dan pengendali sebagai pengatur kinerja yang beraneka ragam sesuai dengan kreatifitas pembuatnya.
Bahan yang harus
disediakan:
1x Arduino Uno
: http://jogjarobotika.com/arduino-uno-r3-compatible-cable-data
2x TCRT5000
: http://jogjarobotika.com/sensor-garis-tcrt5000-infrared-module
1x L298N Driver Motor
: http://jogjarobotika.com/l298n-driver-modul
1x Sasis Kit 2WD
: http://jogjarobotika.com/2wd-sasis-kit
2xSpacer 3cm
:http://jogjarobotika.com/spacer-kuningan-30mm6mm
1x Kabel Jumper
Male-Female http://jogjarobotika.com/kabel-jumper-male-female-40pc
Mur baut 3mm, Jack DC
Male
Setelah bahan ready maka
tahap selanjutnya adalah merakitnya, namun sebelum itu solderlah motor dc,
saklar, dan jack dc terlebih dahulu.
Penyolderan Saklar
dilakukan dengan cara membagi jumper male-female menjadi dua. bagian female
disolder ke bagian 0 (mati) dan bagian male disolder ke bagian - (Hidup).
Sedangkan Jack DC disolder dengan cara membuang bagian female dari kabel
jumper, perlu dicatat warna dan polaritasnya! Begitupun dengan penyolderan
Motor DC..
Sudah?? Lanjut rakit
sasis kitnyaa...
Saya rasa perakitan sasis
nggk perlu dijelaskan :P
Oke lanjut ke
pengkabelan..
Pengkabelan dilakukan
dengan menggunakan kabel jumper, untuk power 5V dapat diambil dari L298N driver
(Hati-hati jangan sampai salah ke 12V)
Berikut bentuk robot
nampak bawah setelah terakit..
Sebelum masuk ke
pemrograman alangkah baiknya kita tahu sistem kerja dari sensor dan driver
motor yg digunakan.
Sensor Garis TCRT5000
Sensor ini merupakan
sensor garis yang mempunyai 4Pin, VCC,GND, Output Analog (A0), Output Digital
(DO). Dalam diagram pengkabelan diatas dapat dilihat bahwa kita (berencana)
menggunakan DO sebagai input ke Arduino, dimana nantinya kita menggunakan teori
Input-Output dalam pemrogramannya. Dimana jika sensor mendeteksi garis hitam
maka sensor akan mengirimkan logika High (1). Kalibrasi sensor dilakukan dengan
memutar trimpot yang terdapat pada sensor.
L298N Driver
L298N driver merupakan dricer motor yang sanggup mengontrol dua
buah motor DC, driver ini membutuhkan sebuah pin logic (LOW/HIGH) dan
sebuah pin PWM untuk menggerakkan motor. Berikut konfigurasi dari L298N
Driver.
Setelah mengerti cara kerja
dari sensor dan driver motor maka kita siap untuk masuk ke pemrograman..
#define m1 3
#define m2 5
#define m3 9
#define m4 10
#define m2 5
#define m3 9
#define m4 10
int arrow =0;
void setup() {
void setup() {
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
}
void loop() {
// pembacaan sensor
pada pin 12 dan 13
int lsensor=digitalRead(12);
int rsensor=digitalRead(13);
int lsensor=digitalRead(12);
int rsensor=digitalRead(13);
//logika robot
menggunakan prinsip AND
if((lsensor == LOW)&&(rsensor== HIGH))
{
// maju dengan kecepatan 100
motorOut(100,100,2);
if((lsensor == LOW)&&(rsensor== HIGH))
{
// maju dengan kecepatan 100
motorOut(100,100,2);
}
if((lsensor== HIGH)&&(rsensor== LOW))
{
//belok kiri
motorOut(0,100,2);
if((lsensor== HIGH)&&(rsensor== LOW))
{
//belok kiri
motorOut(0,100,2);
}
if((lsensor==HIGH)&&(rsensor==
HIGH))
{
motorOut(0,100,2);
//belok kiri
{
motorOut(0,100,2);
//belok kiri
}
if((lsensor== LOW)&&(rsensor==LOW))
{
//belok kanan
motorOut(100,0,2);
}
}
if((lsensor== LOW)&&(rsensor==LOW))
{
//belok kanan
motorOut(100,0,2);
}
}
//Fungsi untuk
menggerakkan motor
void motorOut(unsigned char lpwm, unsigned char rpwm, int arrow){
//arrow =1 mundur, 2 maju,
if(arrow==1){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else if (arrow==2)
{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
void motorOut(unsigned char lpwm, unsigned char rpwm, int arrow){
//arrow =1 mundur, 2 maju,
if(arrow==1){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else if (arrow==2)
{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
robot pemadam api
#include <Servo.h>
Servo myservo;
int pos = 0;
boolean fire = false;
/*-------defining Inputs------*/
#define Left_S 9 // left sensor
#define Right_S 10 // right sensor
#define Forward_S 8 //forward sensor
/*-------defining Outputs------*/
#define LM1 2 // left motor
#define LM2 3 // left motor
#define RM1 4 // right motor
#define RM2 5 // right motor
#define pump 6
void setup()
{
pinMode(Left_S, INPUT);
pinMode(Right_S, INPUT);
pinMode(Forward_S, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(pump, OUTPUT);
myservo.attach(11);
myservo.write(90);
}
void put_off_fire()
{
delay (500);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
digitalWrite(pump, HIGH); delay(500);
for (pos = 50; pos <= 130; pos += 1) {
myservo.write(pos);
delay(10);
}
for (pos = 130; pos >= 50; pos -= 1) {
myservo.write(pos);
delay(10);
}
digitalWrite(pump,LOW);
myservo.write(90);
fire=false;
}
void loop()
{
myservo.write(90); //Sweep_Servo();
if (digitalRead(Left_S) ==1 && digitalRead(Right_S)==1 && digitalRead(Forward_S) ==1) //If Fire not detected all sensors are zero
{
//Do not move the robot
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
}
else if (digitalRead(Forward_S) ==0) //If Fire is straight ahead
{
//Move the robot forward
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
fire = true;
}
else if (digitalRead(Left_S) ==0) //If Fire is to the left
{
//Move the robot left
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
}
else if (digitalRead(Right_S) ==0) //If Fire is to the right
{
//Move the robot right
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
delay(300); //Slow down the speed of robot
while (fire == true)
{
put_off_fire();
}
}
Servo myservo;
int pos = 0;
boolean fire = false;
/*-------defining Inputs------*/
#define Left_S 9 // left sensor
#define Right_S 10 // right sensor
#define Forward_S 8 //forward sensor
/*-------defining Outputs------*/
#define LM1 2 // left motor
#define LM2 3 // left motor
#define RM1 4 // right motor
#define RM2 5 // right motor
#define pump 6
void setup()
{
pinMode(Left_S, INPUT);
pinMode(Right_S, INPUT);
pinMode(Forward_S, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(pump, OUTPUT);
myservo.attach(11);
myservo.write(90);
}
void put_off_fire()
{
delay (500);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
digitalWrite(pump, HIGH); delay(500);
for (pos = 50; pos <= 130; pos += 1) {
myservo.write(pos);
delay(10);
}
for (pos = 130; pos >= 50; pos -= 1) {
myservo.write(pos);
delay(10);
}
digitalWrite(pump,LOW);
myservo.write(90);
fire=false;
}
void loop()
{
myservo.write(90); //Sweep_Servo();
if (digitalRead(Left_S) ==1 && digitalRead(Right_S)==1 && digitalRead(Forward_S) ==1) //If Fire not detected all sensors are zero
{
//Do not move the robot
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
}
else if (digitalRead(Forward_S) ==0) //If Fire is straight ahead
{
//Move the robot forward
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
fire = true;
}
else if (digitalRead(Left_S) ==0) //If Fire is to the left
{
//Move the robot left
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
}
else if (digitalRead(Right_S) ==0) //If Fire is to the right
{
//Move the robot right
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
delay(300); //Slow down the speed of robot
while (fire == true)
{
put_off_fire();
}
}
sensor data android
#define trigPin 7
#define echoPin 6
int led1 =2;
int led2 =3;
int jarakMAX = 250;
int jarakMin = 2;
long microSecond, jarakCm;
int ledTime =450;
void setup() {
Serial.begin (9600); //Kecepatan komunikasi serial
pinMode(trigPin, OUTPUT); //Set pin Trigger sebagai output
pinMode(echoPin, INPUT); //Set pin Echo sebagai input
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
microSecond = pulseIn(echoPin, HIGH);
jarakCm = microSecond / 58.3;
if (jarakCm >= jarakMAX)
{
Serial.println("....>250cm");
}
else if (jarakCm < 5)
{
Serial.println("<5 cm");
}
else if (jarakCm < 10)
{
Serial.println("<10 cm");
}
else if (jarakCm <= jarakMin)
{
Serial.println("....<2cm");
}
else {
Serial.print(jarakCm);
Serial.println("cm");
}
delay(100);
}
#define echoPin 6
int led1 =2;
int led2 =3;
int jarakMAX = 250;
int jarakMin = 2;
long microSecond, jarakCm;
int ledTime =450;
void setup() {
Serial.begin (9600); //Kecepatan komunikasi serial
pinMode(trigPin, OUTPUT); //Set pin Trigger sebagai output
pinMode(echoPin, INPUT); //Set pin Echo sebagai input
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
microSecond = pulseIn(echoPin, HIGH);
jarakCm = microSecond / 58.3;
if (jarakCm >= jarakMAX)
{
Serial.println("....>250cm");
}
else if (jarakCm < 5)
{
Serial.println("<5 cm");
}
else if (jarakCm < 10)
{
Serial.println("<10 cm");
}
else if (jarakCm <= jarakMin)
{
Serial.println("....<2cm");
}
else {
Serial.print(jarakCm);
Serial.println("cm");
}
delay(100);
}
robot pemungut sampah otomatis
#include <SoftwareSerial.h>
#include <Servo.h>
#include <NewPing.h> //Library untuk Sensor Ultrasonic
#define trigPin A0 //Set Trigger HCSR04 di Pin digital 12
#define echoPin A1 //Set Echo HCSR04 di Pin digital 13
#define MAX_DISTANCE 500 //Set jarak maksimal
NewPing sonar(trigPin, echoPin, MAX_DISTANCE);
SoftwareSerial BT(0, 1); // RX dan TX
Servo myservo1, myservo2, myservo3, myservo4, myservo5, myservo6;
int bluetoothTx = 0;
int bluetoothRx = 1;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
///////============/////////////
const int pinRelay = 7;
String dataDikirim;
String readdata;
char val;
void setup() {
myservo1.attach(8);
myservo2.attach(9);
myservo3.attach(10);
myservo4.attach(11);
myservo5.attach(12);
myservo6.attach(6);
bluetooth.begin(9400);
////////////===========//////////
BT.begin(9600);
Serial.begin(9600);
pinMode(pinRelay, OUTPUT);
digitalWrite(pinRelay, HIGH); //tombol otomats dan manual
pinMode(4, OUTPUT); // connect to input 1 of l293d
pinMode(2, OUTPUT); // connect to input 4 of l293d
pinMode(5, OUTPUT); // connect to input 3 of l293d
pinMode(3, OUTPUT); // connect to input 2 of l293d
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(trigPin, OUTPUT); //Set pin Trigger sebagai output
pinMode(echoPin, INPUT); //Set pin Echo sebagai input
}
//-----------------------------------------------------------------------//
void loop() {
long duration, jarak,posisi=0,i;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration/2) / 29.1;
Serial.print(jarak);
Serial.println("cm");
if(jarak<=30) // belok kanan
{
}
else{
}
delay(100); //Delay
//Sensor
while (BT.available())
{
delay(10);
char c = BT.read();
dataDikirim += c;
}
if (dataDikirim.length() > 0)
{
Serial.println(dataDikirim);
if (dataDikirim == "A1") //otomatis
{
digitalWrite(pinRelay, LOW);
}
else if (dataDikirim == "A") //manual
{
digitalWrite(pinRelay, HIGH);
}
dataDikirim = "";
//khusus relay
if( Serial.available() >0 ) {
val = Serial.read();
Serial.println(val);
}
if( val == '1' ) {
digitalWrite(2,HIGH); }
else if( val == '2' ) {
digitalWrite(3,HIGH); }
else if( val == '3' ) {
digitalWrite(4,HIGH); }
else if( val == '4' ) {
digitalWrite(5,HIGH); }
else if( val == '5' ) {
}
else if( val == 'A' ) {
digitalWrite(2,LOW); }
else if( val == 'B' ) {
digitalWrite(3,LOW); }
else if( val == 'C' ) {
digitalWrite(4,LOW); }
else if( val == 'D' ) {
digitalWrite(5,LOW); }
///control led
if(bluetooth.available()>= 2 )
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 *256) + servopos;
Serial.println(realservo);
if (realservo >= 1000 && realservo <1180){
int servo1 = realservo;
servo1 = map(servo1, 1000,1180,0,180);
myservo1.write(servo1);
Serial.println("servo 1 ON");
delay(10);
}
if (realservo >=2000 && realservo <2180){
int servo2 = realservo;
servo2 = map(servo2,2000,2180,0,180);
myservo2.write(servo2);
Serial.println("servo 2 On");
delay(10);
}
if (realservo >=3000 && realservo < 3180){
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180,0,180);
myservo3.write(servo3);
Serial.println("servo 3 On");
delay(10);
}
if (realservo >=4000 && realservo < 4180){
int servo4 = realservo;
servo4 = map(servo4, 4000, 4180,0,180);
myservo4.write(servo4);
Serial.println("servo 4 On");
delay(10);
}
if (realservo >=5000 && realservo < 5180){
int servo5 = realservo;
servo5 = map(servo5, 5000, 5180,0,180);
myservo5.write(servo5);
Serial.println("servo 5 On");
delay(10);
}
if (realservo >=6000 && realservo < 6180){
int servo6 = realservo;
servo6 = map(servo6, 6000, 6180,0,180);
myservo6.write(servo6);
Serial.println("servo 6 On");
delay(10);
}
// control servo
while (Serial.available()){ //Check if there is an available byte to read
delay(10); //Delay added to make thing stable
char c = Serial.read(); //Conduct a serial read
readdata += c; //build the string- "forward", "reverse", "left" and "right"
}
if (readdata.length() > 0) {
Serial.println(readdata); // print data to serial monitor
// if data received as forward move robot forward
if(readdata == "maju")
{
digitalWrite(4, HIGH);
digitalWrite (2, HIGH);
digitalWrite(5,LOW);
digitalWrite(3,LOW);
delay(100);
}
// if data received as reverse move robot reverse
else if(readdata == "mundur")
{
digitalWrite(4, LOW);
digitalWrite(2, LOW);
digitalWrite(5, HIGH);
digitalWrite(3,HIGH);
delay(100);
}
// if data received as right turn robot to right direction.
else if (readdata == "kanan")
{
digitalWrite (4,HIGH);
digitalWrite (2,LOW);
digitalWrite (5,LOW);
digitalWrite (3,LOW);
delay (100);
}
// if data received as left turn robot to left direction
else if ( readdata == "kiri")
{
digitalWrite (4, LOW);
digitalWrite (2, HIGH);
digitalWrite (5, LOW);
digitalWrite (3, LOW);
delay (100);
}
// if data received as stop, halt the robot
else if (readdata == "stop")
{
digitalWrite (4, LOW);
digitalWrite (2, LOW);
digitalWrite (5, LOW);
digitalWrite (3, LOW);
delay (100);
}
}
}
readdata="";}} //Reset the variable
#include <Servo.h>
#include <NewPing.h> //Library untuk Sensor Ultrasonic
#define trigPin A0 //Set Trigger HCSR04 di Pin digital 12
#define echoPin A1 //Set Echo HCSR04 di Pin digital 13
#define MAX_DISTANCE 500 //Set jarak maksimal
NewPing sonar(trigPin, echoPin, MAX_DISTANCE);
SoftwareSerial BT(0, 1); // RX dan TX
Servo myservo1, myservo2, myservo3, myservo4, myservo5, myservo6;
int bluetoothTx = 0;
int bluetoothRx = 1;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
///////============/////////////
const int pinRelay = 7;
String dataDikirim;
String readdata;
char val;
void setup() {
myservo1.attach(8);
myservo2.attach(9);
myservo3.attach(10);
myservo4.attach(11);
myservo5.attach(12);
myservo6.attach(6);
bluetooth.begin(9400);
////////////===========//////////
BT.begin(9600);
Serial.begin(9600);
pinMode(pinRelay, OUTPUT);
digitalWrite(pinRelay, HIGH); //tombol otomats dan manual
pinMode(4, OUTPUT); // connect to input 1 of l293d
pinMode(2, OUTPUT); // connect to input 4 of l293d
pinMode(5, OUTPUT); // connect to input 3 of l293d
pinMode(3, OUTPUT); // connect to input 2 of l293d
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(trigPin, OUTPUT); //Set pin Trigger sebagai output
pinMode(echoPin, INPUT); //Set pin Echo sebagai input
}
//-----------------------------------------------------------------------//
void loop() {
long duration, jarak,posisi=0,i;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration/2) / 29.1;
Serial.print(jarak);
Serial.println("cm");
if(jarak<=30) // belok kanan
{
}
else{
}
delay(100); //Delay
//Sensor
while (BT.available())
{
delay(10);
char c = BT.read();
dataDikirim += c;
}
if (dataDikirim.length() > 0)
{
Serial.println(dataDikirim);
if (dataDikirim == "A1") //otomatis
{
digitalWrite(pinRelay, LOW);
}
else if (dataDikirim == "A") //manual
{
digitalWrite(pinRelay, HIGH);
}
dataDikirim = "";
//khusus relay
if( Serial.available() >0 ) {
val = Serial.read();
Serial.println(val);
}
if( val == '1' ) {
digitalWrite(2,HIGH); }
else if( val == '2' ) {
digitalWrite(3,HIGH); }
else if( val == '3' ) {
digitalWrite(4,HIGH); }
else if( val == '4' ) {
digitalWrite(5,HIGH); }
else if( val == '5' ) {
}
else if( val == 'A' ) {
digitalWrite(2,LOW); }
else if( val == 'B' ) {
digitalWrite(3,LOW); }
else if( val == 'C' ) {
digitalWrite(4,LOW); }
else if( val == 'D' ) {
digitalWrite(5,LOW); }
///control led
if(bluetooth.available()>= 2 )
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 *256) + servopos;
Serial.println(realservo);
if (realservo >= 1000 && realservo <1180){
int servo1 = realservo;
servo1 = map(servo1, 1000,1180,0,180);
myservo1.write(servo1);
Serial.println("servo 1 ON");
delay(10);
}
if (realservo >=2000 && realservo <2180){
int servo2 = realservo;
servo2 = map(servo2,2000,2180,0,180);
myservo2.write(servo2);
Serial.println("servo 2 On");
delay(10);
}
if (realservo >=3000 && realservo < 3180){
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180,0,180);
myservo3.write(servo3);
Serial.println("servo 3 On");
delay(10);
}
if (realservo >=4000 && realservo < 4180){
int servo4 = realservo;
servo4 = map(servo4, 4000, 4180,0,180);
myservo4.write(servo4);
Serial.println("servo 4 On");
delay(10);
}
if (realservo >=5000 && realservo < 5180){
int servo5 = realservo;
servo5 = map(servo5, 5000, 5180,0,180);
myservo5.write(servo5);
Serial.println("servo 5 On");
delay(10);
}
if (realservo >=6000 && realservo < 6180){
int servo6 = realservo;
servo6 = map(servo6, 6000, 6180,0,180);
myservo6.write(servo6);
Serial.println("servo 6 On");
delay(10);
}
// control servo
while (Serial.available()){ //Check if there is an available byte to read
delay(10); //Delay added to make thing stable
char c = Serial.read(); //Conduct a serial read
readdata += c; //build the string- "forward", "reverse", "left" and "right"
}
if (readdata.length() > 0) {
Serial.println(readdata); // print data to serial monitor
// if data received as forward move robot forward
if(readdata == "maju")
{
digitalWrite(4, HIGH);
digitalWrite (2, HIGH);
digitalWrite(5,LOW);
digitalWrite(3,LOW);
delay(100);
}
// if data received as reverse move robot reverse
else if(readdata == "mundur")
{
digitalWrite(4, LOW);
digitalWrite(2, LOW);
digitalWrite(5, HIGH);
digitalWrite(3,HIGH);
delay(100);
}
// if data received as right turn robot to right direction.
else if (readdata == "kanan")
{
digitalWrite (4,HIGH);
digitalWrite (2,LOW);
digitalWrite (5,LOW);
digitalWrite (3,LOW);
delay (100);
}
// if data received as left turn robot to left direction
else if ( readdata == "kiri")
{
digitalWrite (4, LOW);
digitalWrite (2, HIGH);
digitalWrite (5, LOW);
digitalWrite (3, LOW);
delay (100);
}
// if data received as stop, halt the robot
else if (readdata == "stop")
{
digitalWrite (4, LOW);
digitalWrite (2, LOW);
digitalWrite (5, LOW);
digitalWrite (3, LOW);
delay (100);
}
}
}
readdata="";}} //Reset the variable
Kamis, 01 November 2018
program arduino
pogram mobile yg ad aplikasi nya
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); // RX, TX
#define m1 3
#define m2 5
#define m3 9
#define m4 10
int data=0,kec=0;
boolean maju=true;
//array kecepatan
int fast[11]={0,80,100,120,140,160,180,200,220,240,255};
void setup()
{
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
// for HC-05 use 38400 when poerwing with KEY/STATE set to HIGH on power on
mySerial.begin(9600);
}
void motorOut(unsigned char lpwm, unsigned char rpwm, boolean arrow){
//arrow=false=maju; arrow=true=mundur;
if(arrow==false){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
void loop(){
if(mySerial.available()>0){
data=mySerial.read();
//penyimpan data kecepatan
if (data =='0') { kec=0;}
else if (data =='1') { kec=1;}
else if (data =='2') { kec=2;}
else if (data =='3') { kec=3;}
else if (data =='4') { kec=4;}
else if (data =='5') { kec=5;}
else if (data =='6') { kec=6;}
else if (data =='7') { kec=7;}
else if (data =='8') { kec=8;}
else if (data =='9') { kec=9;}
else if (data =='q') {kec=10;}
//S= Stop
if (data == 'S')
{ motorOut(0,0,false); }
//F=Maju
if (data=='F')
{ motorOut(fast[kec],fast[kec],true); }
//I=Maju sambil belok kanan
if (data=='I')
{ motorOut(fast[kec],((fast[kec])/2),true);}
//G=Maju sambil belok kiri
if (data=='G')
{ motorOut(((fast[kec])/2),fast[kec],true); }
//R=Belok kanan
if(data=='R')
{ motorOut(fast[kec],0,true); }
//L=Belok kiri
if(data=='L')
{ motorOut(0,fast[kec],true); }
//B=Mundur
if(data=='B')
{ motorOut(fast[kec],fast[kec],false); }
//H=Mundur kiri
if (data=='H')
{ motorOut(((fast[kec])/2),fast[kec],false); }
//Mundur kanan
if (data=='J')
{ motorOut(fast[kec],((fast[kec])/2),false); }
}
}
program mobile arduino tanpa bluettoooth
#include <Servo.h> // Includes servo library.
// defines pins numbers
const int trigPin = 9;
const int echoPin = 8;
const int lm1=7;
const int lm2=6;
const int rm1=5;
const int rm2=4;
const int servoPin=10;
Servo myservo;
// defines variables
long duration;
int distance;
int distance_f;
int distance_r;
int distance_l;
int maxLowDistance=70;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(lm1,OUTPUT);
pinMode(lm2,OUTPUT);
pinMode(rm1,OUTPUT);
pinMode(rm2,OUTPUT);
myservo.attach(servoPin);
myservo.write(90);
Serial.begin(9600); // Starts the serial communication
}
void loop() {
distance_f=ping();
if(distance_f > maxLowDistance){
front();
delay(400);
}else{
Break();
get_Distance();
if(distance_r > maxLowDistance){
right();
delay(400);
front();
}else if(distance_l > maxLowDistance){
left();
delay(400);
front();
}else{
back();
delay(400);
Break();
}
}
}
void displayDistance(){
Serial.print("Right Distance : ");
Serial.print(distance_r);
Serial.println("");
Serial.print("Front Distance : ");
Serial.print(distance_f);
Serial.println("");
Serial.print("Left Distance : ");
Serial.print(distance_l);
Serial.println("");
}
void front(){
Serial.println("Forward Move");
digitalWrite(lm2,HIGH);
digitalWrite(rm2,HIGH);
digitalWrite(lm1,LOW);
digitalWrite(rm1,LOW);
}
void back(){
Serial.println("Back Move");
digitalWrite(lm1,HIGH);
digitalWrite(rm1,HIGH);
digitalWrite(lm2,LOW);
digitalWrite(rm2,LOW);
}
void left(){
digitalWrite(rm2,HIGH);
digitalWrite(rm1,LOW);
digitalWrite(lm1,HIGH);
digitalWrite(lm2,LOW);
}
void right(){
digitalWrite(lm2,HIGH);
digitalWrite(lm1,LOW);
digitalWrite(rm1,HIGH);
digitalWrite(rm2,LOW);
}
void Break(){
digitalWrite(lm2,LOW);
digitalWrite(lm1,LOW);
digitalWrite(rm1,LOW);
digitalWrite(rm2,LOW);
}
void get_Distance(){
myservo.write(0);
delay(500);
int temp_r1=ping();
myservo.write(45);
delay(500);
int temp_r2=ping();
if(temp_r1<temp_r2){
distance_r=temp_r1;
}else{
distance_r=temp_r2;
}
myservo.write(90);
delay(500);
distance_f=ping();
myservo.write(135);
delay(500);
int temp_l1=ping();
myservo.write(180);
delay(500);
int temp_l2=ping();
if(temp_l1<temp_l2){
distance_l=temp_l1;
}else{
distance_l=temp_l2;
}
myservo.write(90);
}
int ping(){
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
return distance;
}
program L293d
int motor1Pin1 = 2;
int motor1Pin2 = 3;
int enable1Pin = 4;
int motor2Pin1 = 5;
int motor2Pin2 = 6;
int enable2Pin = 7;
int state;
int flag=0;
int stateStop=0;
void setup() {
// Set Motor DC sebagai output:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);
// Set Enable pada 2 buah Motor DC
digitalWrite(enable1Pin, HIGH);
digitalWrite(enable2Pin, HIGH);
// inisialisasi komunikasi serial
Serial.begin(9600);
}
void loop() {
// Jika data diterima, maka dimasukkan ke variabel state
if(Serial.available() > 0){
state = Serial.read();
flag=0;
}
// Jika state = F, maka Motor DC bergerak maju
if (state == 'F') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if(flag == 0){
Serial.println("MAJU TAK GENTAR!");
flag=1;
}
}
// Jika state = L, maka Motor DC berbelok ke kiri
else if (state == 'L') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("BELOK KIRI GAN!");
flag=1;
}
delay(1500);
state=3;
stateStop=1;
}
// Jika state = S, maka Motor DC akan berhenti
else if (state == 'S' || stateStop == 1) {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("BERHENTI DULU");
flag=1;
}
stateStop=0;
}
// Jika state = R, maka Motor DC berbelok ke kanan
else if (state == 'R') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if(flag == 0){
Serial.println("BELOK KANAN GAN!");
flag=1;
}
delay(1500);
state=3;
stateStop=1;
}
// Jika state = B, maka Motor DC bergerak mundur
else if (state == 'B') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("MUNDUR BUKAN BERARTI KEKALAHAN");
flag=1;
}
}
}
servo bluettoth enam channel
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo1, myservo2, myservo3, myservo4, myservo5, myservo6;
int bluetoothTx = 7;
int bluetoothRx = 8;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
{
myservo1.attach(9);
myservo2.attach(10);
myservo3.attach(11);
myservo4.attach(3);
myservo5.attach(5);
myservo6.attach(6);
//Setup usb serial connection to computer
Serial.begin(9600);
//Setup Bluetooth serial connection to android
bluetooth.begin(9600);
}
void loop()
{
//Read from bluetooth and write to usb serial
if(bluetooth.available()>= 2 )
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 *256) + servopos;
Serial.println(realservo);
if (realservo >= 1000 && realservo <1180){
int servo1 = realservo;
servo1 = map(servo1, 1000,1180,0,180);
myservo1.write(servo1);
Serial.println("servo 1 ON");
delay(10);
}
if (realservo >=2000 && realservo <2180){
int servo2 = realservo;
servo2 = map(servo2,2000,2180,0,180);
myservo2.write(servo2);
Serial.println("servo 2 On");
delay(10);
}
if (realservo >=3000 && realservo < 3180){
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180,0,180);
myservo3.write(servo3);
Serial.println("servo 3 On");
delay(10);
}
if (realservo >=4000 && realservo < 4180){
int servo4 = realservo;
servo4 = map(servo4, 4000, 4180,0,180);
myservo4.write(servo4);
Serial.println("servo 4 On");
delay(10);
}
if (realservo >=5000 && realservo < 5180){
int servo5 = realservo;
servo5 = map(servo5, 5000, 5180,0,180);
myservo5.write(servo5);
Serial.println("servo 5 On");
delay(10);
}
if (realservo >=6000 && realservo < 6180){
int servo6 = realservo;
servo6 = map(servo6, 6000, 6180,0,180);
myservo6.write(servo6);
Serial.println("servo 6 On");
delay(10);
}
}
}
progam control relay bluetooth
#include <SoftwareSerial.h>
SoftwareSerial BT(0, 1); // RX dan TX
const int pinLampu = 7;
String dataDikirim;
void setup()
{
Serial.begin(9600);
BT.begin(9600);
pinMode(pinLampu, OUTPUT);
digitalWrite(pinLampu, HIGH);
}
void loop()
{
while (BT.available())
{
delay(10);
char c = BT.read();
dataDikirim += c;
}
if (dataDikirim.length() > 0)
{
Serial.println(dataDikirim);
if (dataDikirim == "A1")
{
digitalWrite(pinLampu, LOW);
}
else if (dataDikirim == "A")
{
digitalWrite(pinLampu, HIGH);
}
dataDikirim = "";
}
}
control bluetooth led 4 channel
char val;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
Serial.begin(9600);
}
void loop() {
if( Serial.available() >0 ) {
val = Serial.read();
Serial.println(val);
}
if( val == 'F' ) {
digitalWrite(2,HIGH); }
else if( val == 'A1' ) {
digitalWrite(3,HIGH); }
else if( val == 'A2' ) {
digitalWrite(4,HIGH); }
else if( val == 'A3' ) {
digitalWrite(5,HIGH); }
else if( val == 'A4' ) {
digitalWrite(6,HIGH); }
else if( val == 'A5' ) {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
else if( val == 'a' ) {
digitalWrite(2,LOW); }
else if( val == 'b' ) {
digitalWrite(3,LOW); }
else if( val == 'c' ) {
digitalWrite(4,LOW); }
else if( val == 'd' ) {
digitalWrite(5,LOW); }
else if( val == 'e' ) {
digitalWrite(6,LOW); }
else if( val == 'f' ) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
}
Control led dengan suara
#include <SoftwareSerial.h>
SoftwareSerial BT(0,1);
String perintah;
void setup() {
BT.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
Serial.begin(9600);
}
void loop() {
while (BT.available()){
delay(10);
char c =BT.read();
perintah +=c;
}
if(perintah.length()>0){
Serial.println(perintah);
}
if(perintah=="hidupkan lampu "){
digitalWrite(2,HIGH);}
else if (perintah=="LED kamar mati"){
digitalWrite(2,LOW);}
else if (perintah=="lampu dapur hidup"){
digitalWrite(3,HIGH);}
else if (perintah=="led dapur mati"){
digitalWrite(3,LOW);}
else if (perintah=="hidupkan kipas angin"){
digitalWrite(4,HIGH);}
else if (perintah=="matikan kipas angin"){
digitalWrite(4,LOW);}
else if (perintah=="hidupkan komputer"){
digitalWrite(5,HIGH);}
else if (perintah=="matikan komputer"){
digitalWrite(5,LOW);}
else if (perintah=="hidupkan semua"){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}
else if (perintah=="matikan semua"){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}
}
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); // RX, TX
#define m1 3
#define m2 5
#define m3 9
#define m4 10
int data=0,kec=0;
boolean maju=true;
//array kecepatan
int fast[11]={0,80,100,120,140,160,180,200,220,240,255};
void setup()
{
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
// for HC-05 use 38400 when poerwing with KEY/STATE set to HIGH on power on
mySerial.begin(9600);
}
void motorOut(unsigned char lpwm, unsigned char rpwm, boolean arrow){
//arrow=false=maju; arrow=true=mundur;
if(arrow==false){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
void loop(){
if(mySerial.available()>0){
data=mySerial.read();
//penyimpan data kecepatan
if (data =='0') { kec=0;}
else if (data =='1') { kec=1;}
else if (data =='2') { kec=2;}
else if (data =='3') { kec=3;}
else if (data =='4') { kec=4;}
else if (data =='5') { kec=5;}
else if (data =='6') { kec=6;}
else if (data =='7') { kec=7;}
else if (data =='8') { kec=8;}
else if (data =='9') { kec=9;}
else if (data =='q') {kec=10;}
//S= Stop
if (data == 'S')
{ motorOut(0,0,false); }
//F=Maju
if (data=='F')
{ motorOut(fast[kec],fast[kec],true); }
//I=Maju sambil belok kanan
if (data=='I')
{ motorOut(fast[kec],((fast[kec])/2),true);}
//G=Maju sambil belok kiri
if (data=='G')
{ motorOut(((fast[kec])/2),fast[kec],true); }
//R=Belok kanan
if(data=='R')
{ motorOut(fast[kec],0,true); }
//L=Belok kiri
if(data=='L')
{ motorOut(0,fast[kec],true); }
//B=Mundur
if(data=='B')
{ motorOut(fast[kec],fast[kec],false); }
//H=Mundur kiri
if (data=='H')
{ motorOut(((fast[kec])/2),fast[kec],false); }
//Mundur kanan
if (data=='J')
{ motorOut(fast[kec],((fast[kec])/2),false); }
}
}
program mobile arduino tanpa bluettoooth
#include <Servo.h> // Includes servo library.
// defines pins numbers
const int trigPin = 9;
const int echoPin = 8;
const int lm1=7;
const int lm2=6;
const int rm1=5;
const int rm2=4;
const int servoPin=10;
Servo myservo;
// defines variables
long duration;
int distance;
int distance_f;
int distance_r;
int distance_l;
int maxLowDistance=70;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(lm1,OUTPUT);
pinMode(lm2,OUTPUT);
pinMode(rm1,OUTPUT);
pinMode(rm2,OUTPUT);
myservo.attach(servoPin);
myservo.write(90);
Serial.begin(9600); // Starts the serial communication
}
void loop() {
distance_f=ping();
if(distance_f > maxLowDistance){
front();
delay(400);
}else{
Break();
get_Distance();
if(distance_r > maxLowDistance){
right();
delay(400);
front();
}else if(distance_l > maxLowDistance){
left();
delay(400);
front();
}else{
back();
delay(400);
Break();
}
}
}
void displayDistance(){
Serial.print("Right Distance : ");
Serial.print(distance_r);
Serial.println("");
Serial.print("Front Distance : ");
Serial.print(distance_f);
Serial.println("");
Serial.print("Left Distance : ");
Serial.print(distance_l);
Serial.println("");
}
void front(){
Serial.println("Forward Move");
digitalWrite(lm2,HIGH);
digitalWrite(rm2,HIGH);
digitalWrite(lm1,LOW);
digitalWrite(rm1,LOW);
}
void back(){
Serial.println("Back Move");
digitalWrite(lm1,HIGH);
digitalWrite(rm1,HIGH);
digitalWrite(lm2,LOW);
digitalWrite(rm2,LOW);
}
void left(){
digitalWrite(rm2,HIGH);
digitalWrite(rm1,LOW);
digitalWrite(lm1,HIGH);
digitalWrite(lm2,LOW);
}
void right(){
digitalWrite(lm2,HIGH);
digitalWrite(lm1,LOW);
digitalWrite(rm1,HIGH);
digitalWrite(rm2,LOW);
}
void Break(){
digitalWrite(lm2,LOW);
digitalWrite(lm1,LOW);
digitalWrite(rm1,LOW);
digitalWrite(rm2,LOW);
}
void get_Distance(){
myservo.write(0);
delay(500);
int temp_r1=ping();
myservo.write(45);
delay(500);
int temp_r2=ping();
if(temp_r1<temp_r2){
distance_r=temp_r1;
}else{
distance_r=temp_r2;
}
myservo.write(90);
delay(500);
distance_f=ping();
myservo.write(135);
delay(500);
int temp_l1=ping();
myservo.write(180);
delay(500);
int temp_l2=ping();
if(temp_l1<temp_l2){
distance_l=temp_l1;
}else{
distance_l=temp_l2;
}
myservo.write(90);
}
int ping(){
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
return distance;
}
program L293d
int motor1Pin1 = 2;
int motor1Pin2 = 3;
int enable1Pin = 4;
int motor2Pin1 = 5;
int motor2Pin2 = 6;
int enable2Pin = 7;
int state;
int flag=0;
int stateStop=0;
void setup() {
// Set Motor DC sebagai output:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);
// Set Enable pada 2 buah Motor DC
digitalWrite(enable1Pin, HIGH);
digitalWrite(enable2Pin, HIGH);
// inisialisasi komunikasi serial
Serial.begin(9600);
}
void loop() {
// Jika data diterima, maka dimasukkan ke variabel state
if(Serial.available() > 0){
state = Serial.read();
flag=0;
}
// Jika state = F, maka Motor DC bergerak maju
if (state == 'F') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if(flag == 0){
Serial.println("MAJU TAK GENTAR!");
flag=1;
}
}
// Jika state = L, maka Motor DC berbelok ke kiri
else if (state == 'L') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("BELOK KIRI GAN!");
flag=1;
}
delay(1500);
state=3;
stateStop=1;
}
// Jika state = S, maka Motor DC akan berhenti
else if (state == 'S' || stateStop == 1) {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("BERHENTI DULU");
flag=1;
}
stateStop=0;
}
// Jika state = R, maka Motor DC berbelok ke kanan
else if (state == 'R') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if(flag == 0){
Serial.println("BELOK KANAN GAN!");
flag=1;
}
delay(1500);
state=3;
stateStop=1;
}
// Jika state = B, maka Motor DC bergerak mundur
else if (state == 'B') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("MUNDUR BUKAN BERARTI KEKALAHAN");
flag=1;
}
}
}
servo bluettoth enam channel
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo1, myservo2, myservo3, myservo4, myservo5, myservo6;
int bluetoothTx = 7;
int bluetoothRx = 8;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
{
myservo1.attach(9);
myservo2.attach(10);
myservo3.attach(11);
myservo4.attach(3);
myservo5.attach(5);
myservo6.attach(6);
//Setup usb serial connection to computer
Serial.begin(9600);
//Setup Bluetooth serial connection to android
bluetooth.begin(9600);
}
void loop()
{
//Read from bluetooth and write to usb serial
if(bluetooth.available()>= 2 )
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 *256) + servopos;
Serial.println(realservo);
if (realservo >= 1000 && realservo <1180){
int servo1 = realservo;
servo1 = map(servo1, 1000,1180,0,180);
myservo1.write(servo1);
Serial.println("servo 1 ON");
delay(10);
}
if (realservo >=2000 && realservo <2180){
int servo2 = realservo;
servo2 = map(servo2,2000,2180,0,180);
myservo2.write(servo2);
Serial.println("servo 2 On");
delay(10);
}
if (realservo >=3000 && realservo < 3180){
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180,0,180);
myservo3.write(servo3);
Serial.println("servo 3 On");
delay(10);
}
if (realservo >=4000 && realservo < 4180){
int servo4 = realservo;
servo4 = map(servo4, 4000, 4180,0,180);
myservo4.write(servo4);
Serial.println("servo 4 On");
delay(10);
}
if (realservo >=5000 && realservo < 5180){
int servo5 = realservo;
servo5 = map(servo5, 5000, 5180,0,180);
myservo5.write(servo5);
Serial.println("servo 5 On");
delay(10);
}
if (realservo >=6000 && realservo < 6180){
int servo6 = realservo;
servo6 = map(servo6, 6000, 6180,0,180);
myservo6.write(servo6);
Serial.println("servo 6 On");
delay(10);
}
}
}
progam control relay bluetooth
#include <SoftwareSerial.h>
SoftwareSerial BT(0, 1); // RX dan TX
const int pinLampu = 7;
String dataDikirim;
void setup()
{
Serial.begin(9600);
BT.begin(9600);
pinMode(pinLampu, OUTPUT);
digitalWrite(pinLampu, HIGH);
}
void loop()
{
while (BT.available())
{
delay(10);
char c = BT.read();
dataDikirim += c;
}
if (dataDikirim.length() > 0)
{
Serial.println(dataDikirim);
if (dataDikirim == "A1")
{
digitalWrite(pinLampu, LOW);
}
else if (dataDikirim == "A")
{
digitalWrite(pinLampu, HIGH);
}
dataDikirim = "";
}
}
control bluetooth led 4 channel
char val;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
Serial.begin(9600);
}
void loop() {
if( Serial.available() >0 ) {
val = Serial.read();
Serial.println(val);
}
if( val == 'F' ) {
digitalWrite(2,HIGH); }
else if( val == 'A1' ) {
digitalWrite(3,HIGH); }
else if( val == 'A2' ) {
digitalWrite(4,HIGH); }
else if( val == 'A3' ) {
digitalWrite(5,HIGH); }
else if( val == 'A4' ) {
digitalWrite(6,HIGH); }
else if( val == 'A5' ) {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
else if( val == 'a' ) {
digitalWrite(2,LOW); }
else if( val == 'b' ) {
digitalWrite(3,LOW); }
else if( val == 'c' ) {
digitalWrite(4,LOW); }
else if( val == 'd' ) {
digitalWrite(5,LOW); }
else if( val == 'e' ) {
digitalWrite(6,LOW); }
else if( val == 'f' ) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
}
Control led dengan suara
#include <SoftwareSerial.h>
SoftwareSerial BT(0,1);
String perintah;
void setup() {
BT.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
Serial.begin(9600);
}
void loop() {
while (BT.available()){
delay(10);
char c =BT.read();
perintah +=c;
}
if(perintah.length()>0){
Serial.println(perintah);
}
if(perintah=="hidupkan lampu "){
digitalWrite(2,HIGH);}
else if (perintah=="LED kamar mati"){
digitalWrite(2,LOW);}
else if (perintah=="lampu dapur hidup"){
digitalWrite(3,HIGH);}
else if (perintah=="led dapur mati"){
digitalWrite(3,LOW);}
else if (perintah=="hidupkan kipas angin"){
digitalWrite(4,HIGH);}
else if (perintah=="matikan kipas angin"){
digitalWrite(4,LOW);}
else if (perintah=="hidupkan komputer"){
digitalWrite(5,HIGH);}
else if (perintah=="matikan komputer"){
digitalWrite(5,LOW);}
else if (perintah=="hidupkan semua"){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}
else if (perintah=="matikan semua"){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}
}
Langganan:
Postingan (Atom)