PROGRAMMING PENGENDALIAN 1 PARFUM
OTOMATIS DAN RPM KIPAS ANGIN MENGGUNAKAN HANDPHONE ANDROID
Spesifikasi hardware:
|
|
Mikrokontroler
|
ATMEGA 8535
|
Crystal
|
11.059200 MHz
|
Komunikasi Data
|
RS232 to Serial TTL
|
Spesifikasi Software:
|
|
Compiler Mikrokontroler
|
Codevision Avr
|
Compiler Android
|
Basic4android
|
#Region Module
Attributes
#FullScreen: False
#IncludeTitle: True
#ApplicationLabel: KIPAS_PARFUM
#VersionCode: 1
#VersionName:
#SupportedOrientations: unspecified
#End Region
'Activity
module
Sub Process_Globals
Dim Serial1 As Serial
Dim TextReader1 As TextReader
Dim TextWriter1 As TextWriter
Dim Timer1 As Timer
Dim connected As Boolean
End Sub
Sub Globals
Dim btnSend As Button
Dim txtSend As EditText
Dim EditText1 As EditText
Dim SeekBar1 As SeekBar
Dim EditText2 As EditText
Dim SeekBar2 As SeekBar
Dim Button2 As Button
End Sub
Sub Activity_Create(FirstTime
As Boolean)
If FirstTime Then
Serial1.Initialize("Serial1")
Timer1.Initialize("Timer1", 500)
End If
Activity.LoadLayout("1")
Activity.AddMenuItem("Connect", "mnuConnect")
Activity.AddMenuItem("Disconnect", "mnuDisconnect")
EditText1.Text=SeekBar1.Value
EditText2.Text=SeekBar2.Value
End Sub
Sub Activity_Resume
If Serial1.IsEnabled = False Then
Msgbox("Please
enable Bluetooth.", "")
Else
Serial1.Listen 'listen for
incoming connections
End If
End Sub
Sub mnuConnect_Click
Dim PairedDevices As Map
PairedDevices = Serial1.GetPairedDevices
Dim l As List
l.Initialize
For i = 0 To PairedDevices.Size
- 1
l.Add(PairedDevices.GetKeyAt(i))
Next
Dim res As Int
res = InputList(l, "Choose
device", -1) 'show list with paired devices
If res <> DialogResponse.CANCEL Then
Serial1.Connect(PairedDevices.Get(l.Get(res)))
'convert
the name to mac address
End If
End Sub
Sub Serial1_Connected
(Success As Boolean)
If Success Then
ToastMessageShow("Connected
successfully", False)
TextReader1.Initialize(Serial1.InputStream)
TextWriter1.Initialize(Serial1.OutputStream)
Timer1.Enabled
= True
connected = True
Else
connected = False
Timer1.Enabled = False
Msgbox(LastException.Message, "Error
connecting.")
End If
End Sub
Sub mnuDisconnect_Click
Serial1.Disconnect
connected = False
End Sub
Sub Activity_Pause
(UserClosed As Boolean)
End Sub
Sub Timer1_Tick
End Sub
Sub SeekBar1_ValueChanged
(Value As Int, UserChanged As Boolean)
EditText1.Text=SeekBar1.Value
If connected Then
TextWriter1.Write("A" &
SeekBar1.Value)
TextWriter1.Flush
Timer1.Enabled=True
TextWriter1.Write("B" &
SeekBar2.Value)
TextWriter1.Flush
Timer1.Enabled=True
End If
End Sub
Sub EditText1_TextChanged
(Old As String, New As String)
'EditText1.SelectAll
End Sub
Sub EditText1_FocusChanged
(HasFocus As Boolean)
EditText1.SelectAll
End Sub
Sub EditText1_EnterPressed
If EditText1.Text="" Then
EditText1.Text=0
End If
SeekBar1.Value=EditText1.Text
End Sub
Sub Button1_Click
Activity.Finish
End Sub
Sub SeekBar2_ValueChanged
(Value As Int, UserChanged As Boolean)
EditText2.Text=SeekBar2.Value
If connected Then
TextWriter1.Write("A" &
SeekBar1.Value)
TextWriter1.Flush
Timer1.Enabled=True
TextWriter1.Write("B" &
SeekBar2.Value)
TextWriter1.Flush
Timer1.Enabled=True
End If
End Sub
Sub EditText2_TextChanged
(Old As String, New As String)
'EditText1.SelectAll
End Sub
Sub EditText2_FocusChanged
(HasFocus As Boolean)
EditText2.SelectAll
End Sub
Sub EditText2_EnterPressed
If EditText2.Text="" Then
EditText2.Text=0
End If
SeekBar2.Value=EditText2.Text
End Sub
Sub Button2_Click
TextWriter1.Write("C" & "1")
TextWriter1.Flush
End
Sub
|
Program
Mikrokontroler
#include <mega8535.h>
long int
dig7,dig6,dig5,dig4,dig3,dig2,dig1,jumlah;
int
digt1,digt2,digt3,digt4,ulangi,loop,data;
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#include <delay.h>
#define e1 PORTD.5
#define a1 PORTD.6
#define b1 PORTD.7
#define e2 PORTD.4
#define a2 PORTD.2
#define b2 PORTD.3
#define sa PORTB.0
#define sb PORTB.1
#define sc PORTB.2
#define sd PORTB.3
#define se PORTB.4
#define sf PORTB.5
#define sg PORTB.6
#define sp PORTB.7
#define digit1
PORTA.3=0,PORTA.2=1,PORTA.1=1,PORTA.0=1
#define digit2 PORTA.3=1,PORTA.2=0,PORTA.1=1,PORTA.0=1
#define digit3
PORTA.3=1,PORTA.2=1,PORTA.1=0,PORTA.0=1
#define digit4
PORTA.3=1,PORTA.2=1,PORTA.1=1,PORTA.0=0
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY
(1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
interrupt [TIM0_OVF] void
timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x94;
// Place your code here
loop++;
if (loop>=100)
{
data++;
loop=0;
}
}
#if RX_BUFFER_SIZE<256
unsigned char
rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int
rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver
buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service
routine
interrupt [USART_RXC] void
usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR |
PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART
Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE)
rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
// USART Transmitter buffer
#define TX_BUFFER_SIZE 8
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char
tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int
tx_wr_index,tx_rd_index,tx_counter;
#endif
// USART Transmitter interrupt service
routine
interrupt [USART_TXC] void
usart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter
buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA &
DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
void segmen(char p,char g,char f,char
e,char d,char c,char b,char a)
{
sa=a;
sb=b;
sc=c;
sd=d;
se=e;
sf=f;
sg=g;
sp=p;
}
void tampil(char angka)
{
switch(angka)
{
// p g f e d c b a
case 0 :
segmen(1,1,0,0,0,0,0,0);break;
case 1 :
segmen(1,1,1,1,1,0,0,1);break;
case 2 :
segmen(1,0,1,0,0,1,0,0);break;
case 3 :
segmen(1,0,1,1,0,0,0,0);break;
case 4 :
segmen(1,0,0,1,1,0,0,1);break;
case 5 :
segmen(1,0,0,1,0,0,1,0);break;
case 6 :
segmen(1,0,0,0,0,0,1,0);break;
case 7 :
segmen(1,1,1,1,1,0,0,0);break;
case 8 :
segmen(1,0,0,0,0,0,0,0);break;
case 9 : segmen(1,0,0,1,0,0,0,0);break;
case 10 :
segmen(1,1,1,1,1,1,1,1);break;
}
}
void scan()
{
tampil(digt1);
digit1;
delay_ms(5);
tampil(digt2);
digit2;
delay_ms(5);
tampil(digt3);
digit3;
delay_ms(5);
tampil(digt4);
digit4;
delay_ms(5);
}
void main(void)
{
// Declare your local variables here
PORTA=0xff;
DDRA=0xff;
PORTB=0xff;
DDRB=0xff;
PORTC=0x00;
DDRC=0x00;
PORTD=0b00111111;
DDRD=0b00111111;
TCCR0=0x05;
TCNT0=0x94;
OCR0=0x00;
TIMSK=0x01;
UCSRA=0x00;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
// Global enable interrupts
#asm("sei")
data=0;
e1=1;
a1=0;
b1=1;
delay_ms(400);
e1=1;
a1=1;
b1=1;
e2=1;
a2=0;
b2=1;
delay_ms(400);
e2=1;
a2=1;
b2=1;
data=0;
while (1){
// Place your code here
dig7=rx_buffer[1];
dig6=rx_buffer[2];
dig5=rx_buffer[3];
dig4=rx_buffer[4];
dig3=rx_buffer[5];
dig2=rx_buffer[6];
dig1=rx_buffer[7];
scan();
if (rx_buffer[0]=='A')
{
jumlah=(dig7*1000000)+(dig6*100000)+(dig5*10000)+(dig4*1000)+(dig3*100)+(dig2*10)+(dig1*1);
printf("@ %d",jumlah);
scan();
digt1=rx_buffer[4];
digt2=rx_buffer[5];
digt3=rx_buffer[6];
digt4=rx_buffer[7];
}
if (rx_buffer[0]=='B')
{
jumlah=(dig7*1000000)+(dig6*100000)+(dig5*10000)+(dig4*1000)+(dig3*100)+(dig2*10)+(dig1*1);
printf("@ %d",jumlah*2);
scan();
digt1=((jumlah*2)/1000)%10;
digt2=((jumlah*2)/100)%10;
digt3=((jumlah*2)/10)%10;
digt4=((jumlah*2)/1)%10;
}
if (rx_buffer[0]=='C')
{
if (rx_buffer[7]==1)
{
for (ulangi=0;ulangi<1;ulangi++)
{
scan();
printf("@ %d",rx_buffer[7]);
e1=1;
a1=0;
b1=1;
delay_ms(400);
}
e1=1;
a1=1;
b1=1;
rx_buffer[0]='A';
for (ulangi=1;ulangi<8;ulangi++)
{
scan();
rx_buffer[ulangi]=1;
}
}
}
if (rx_buffer[0]=='C')
{
if (rx_buffer[7]==2)
{
for (ulangi=0;ulangi<1;ulangi++)
{
scan();
printf("@ %d",rx_buffer[7]);
e2=1;
a2=0;
b2=1;
delay_ms(400);
}
e2=1;
a2=1;
b2=1;
rx_buffer[0]='A';
for (ulangi=1;ulangi<8;ulangi++)
{
scan();
rx_buffer[ulangi]=1;
}
}
}
};
}
|
No comments:
Post a Comment