- Beranda
- Hardware Computer
kontrol servo via sms
...
![rarascute16](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
TS
rarascute16
kontrol servo via sms
Misi para abang-abang Mikrokontroler
help me dunk nie mau bikin TA nie kontrol dua serpo lewat sms
ane minta masukan dunk para master dan yang udah pernah ngerjain TA pake komunikasi serial
nie program ane
tapi belum di tambah dengan serpo :
check this
========================================================
#include <mega16.h>
#ifndef __SLEEP_DEFINED__
#define __SLEEP_DEFINED__
.EQU __se_bit=0x80
.EQU __sm_mask=0x70
.EQU __sm_powerdown=0x20
.EQU __sm_powersave=0x30
.EQU __sm_standby=0x60
.EQU __sm_ext_standby=0x70
.EQU __sm_adc_noise_red=0x10
.SET power_ctrl_reg=mcucr
#endif
#include <stdio.h>
#include <delay.h>
#include <string.h>
#include <stdlib.h>
unsigned char data,flag_ser,r,s,flag_on,f_kirim;
char buffer[70],buf1[70],buf2[70],buf_OK[5] ;
unsigned char t,cek,inbox_str[20];
void midstr(char *s1,char *s2,unsigned char m,unsigned char p);
char get_serial(char *str1);
char ring;
char kode1[10]={"+CMTI:"};
char kode2[10]={"OK"};
char kode3[10]={"RING"};
char kode_ON[10]={"hidup"};
char kode_OFF[10]={"OFF"};
char no_sender[20];
char isi_sms[20];
signed char tanda,i;
unsigned char pos_str1,long_str,inbox;
//-------------------------------------
char get_serial(char *str1)
{
r=0;
flag_ser=0;
data='';
do
{
while(!UCSRA.7);
data=UDR;
if(data=='\r'){}
else if (data=='\n'){
flag_ser=1;}
else
{
str1[r]=data;
r++;
}
}
while(!flag_ser);
}
//======================= ambil tengah string ===============
void midstr(char *s1,char *s2,unsigned char m,unsigned char p)
{
unsigned char I,J,N;
for(N=0;s2[N];N++);
if (m>=0 && m<=N-1)
{
for(I=m,J=0;(J<p&&s2[I]);I++,J++)
s1[J]=s2[I];
s1[p]='\0';
}
else
s1[0]='\0';
}
//----
void show_sms()
{
pos_str1=strpos(buffer,','); //klo ada posisi=10
long_str=strlen(buffer); //12
long_str = long_str - pos_str1;
midstr(inbox_str,buffer,pos_str1+1,long_str); //ngambil dari buffer mulai posisi ke-2 (awal 0) sejumlah 4
inbox=atoi(inbox_str);
delay_ms(2000);
printf("AT+CMGR=%d\r\n",inbox);
get_serial(buf_OK); //ENTER
get_serial(buf1); // no hp dll
get_serial(buf2); //isi sms
tanda=strcmp(buf2,kode_ON);
if(tanda==0)
{
PORTC.2=1; //relay ON
delay_ms(2000);
PORTC.3=1;
flag_on=1;
delay_ms(1000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah ON");
putchar(26);
printf("\r\n");
}
else
{
tanda=strcmp(buf2,kode_OFF);
if(tanda==0)
{
PORTC=0x00; //relay OFF
flag_on=0;
delay_ms(2000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah OFF");
putchar(26);
printf("\r\n");
}
}
delay_ms(4000);
printf("AT+CMGD=%d\r\n",inbox);
delay_ms(2000);
for(s=0;s<70;s++)
{
buffer[s]='';
buf1[s]='';
buf2[s]='';
}
}
void main(void)
{
DDRC=0xff;
PORTC=0x00;
DDRD.4=0;
PORTD.4=1;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
//PORTC.3=1;
//PORTC.2=1;
delay_ms(2000);
while (1)
{
if ((PIND.4==1)&&(f_kirim==0))
{
delay_ms(1000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("LISTRIK MATI");
putchar(26);
printf("\r\n");
f_kirim=1;
}
get_serial(buffer);
i=strpos(buffer,':');//klo ada posisi=5
if(i>0)
{
strncpy(buf1,buffer,i+1);
tanda=strcmp(buf1,kode1);
if(tanda==0) show_sms();
}
else
{
tanda=strcmp(buffer,kode3);
if(tanda==0)
{
ring++;
if (ring>7)
{
ring=0;
printf("ATH\r\n");
if (flag_on==0)
{
PORTC.2=1;
delay_ms(2000);
PORTC.3=1;//relay ON
flag_on=1;
delay_ms(2000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah ON");
putchar(26);
printf("\r\n");
}
else
{
PORTC=0x00;//relay OFF
flag_on=0;
delay_ms(2000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah OFF");
putchar(26);
printf("\r\n");
}
}
}
}
};
}
=====================================================
syntax nyolong punya temen
masih bingung untuk inisial 2 motor servo nya gimana ia ?
dan kode tambahanNya juga
hHeeeee..............![kontrol servo via sms](https://s.kaskus.id/images/2012/12/17/5004215_20121217033631.png)
help me dunk nie mau bikin TA nie kontrol dua serpo lewat sms
ane minta masukan dunk para master dan yang udah pernah ngerjain TA pake komunikasi serial
nie program ane
tapi belum di tambah dengan serpo :
check this
========================================================
#include <mega16.h>
#ifndef __SLEEP_DEFINED__
#define __SLEEP_DEFINED__
.EQU __se_bit=0x80
.EQU __sm_mask=0x70
.EQU __sm_powerdown=0x20
.EQU __sm_powersave=0x30
.EQU __sm_standby=0x60
.EQU __sm_ext_standby=0x70
.EQU __sm_adc_noise_red=0x10
.SET power_ctrl_reg=mcucr
#endif
#include <stdio.h>
#include <delay.h>
#include <string.h>
#include <stdlib.h>
unsigned char data,flag_ser,r,s,flag_on,f_kirim;
char buffer[70],buf1[70],buf2[70],buf_OK[5] ;
unsigned char t,cek,inbox_str[20];
void midstr(char *s1,char *s2,unsigned char m,unsigned char p);
char get_serial(char *str1);
char ring;
char kode1[10]={"+CMTI:"};
char kode2[10]={"OK"};
char kode3[10]={"RING"};
char kode_ON[10]={"hidup"};
char kode_OFF[10]={"OFF"};
char no_sender[20];
char isi_sms[20];
signed char tanda,i;
unsigned char pos_str1,long_str,inbox;
//-------------------------------------
char get_serial(char *str1)
{
r=0;
flag_ser=0;
data='';
do
{
while(!UCSRA.7);
data=UDR;
if(data=='\r'){}
else if (data=='\n'){
flag_ser=1;}
else
{
str1[r]=data;
r++;
}
}
while(!flag_ser);
}
//======================= ambil tengah string ===============
void midstr(char *s1,char *s2,unsigned char m,unsigned char p)
{
unsigned char I,J,N;
for(N=0;s2[N];N++);
if (m>=0 && m<=N-1)
{
for(I=m,J=0;(J<p&&s2[I]);I++,J++)
s1[J]=s2[I];
s1[p]='\0';
}
else
s1[0]='\0';
}
//----
void show_sms()
{
pos_str1=strpos(buffer,','); //klo ada posisi=10
long_str=strlen(buffer); //12
long_str = long_str - pos_str1;
midstr(inbox_str,buffer,pos_str1+1,long_str); //ngambil dari buffer mulai posisi ke-2 (awal 0) sejumlah 4
inbox=atoi(inbox_str);
delay_ms(2000);
printf("AT+CMGR=%d\r\n",inbox);
get_serial(buf_OK); //ENTER
get_serial(buf1); // no hp dll
get_serial(buf2); //isi sms
tanda=strcmp(buf2,kode_ON);
if(tanda==0)
{
PORTC.2=1; //relay ON
delay_ms(2000);
PORTC.3=1;
flag_on=1;
delay_ms(1000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah ON");
putchar(26);
printf("\r\n");
}
else
{
tanda=strcmp(buf2,kode_OFF);
if(tanda==0)
{
PORTC=0x00; //relay OFF
flag_on=0;
delay_ms(2000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah OFF");
putchar(26);
printf("\r\n");
}
}
delay_ms(4000);
printf("AT+CMGD=%d\r\n",inbox);
delay_ms(2000);
for(s=0;s<70;s++)
{
buffer[s]='';
buf1[s]='';
buf2[s]='';
}
}
void main(void)
{
DDRC=0xff;
PORTC=0x00;
DDRD.4=0;
PORTD.4=1;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
//PORTC.3=1;
//PORTC.2=1;
delay_ms(2000);
while (1)
{
if ((PIND.4==1)&&(f_kirim==0))
{
delay_ms(1000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("LISTRIK MATI");
putchar(26);
printf("\r\n");
f_kirim=1;
}
get_serial(buffer);
i=strpos(buffer,':');//klo ada posisi=5
if(i>0)
{
strncpy(buf1,buffer,i+1);
tanda=strcmp(buf1,kode1);
if(tanda==0) show_sms();
}
else
{
tanda=strcmp(buffer,kode3);
if(tanda==0)
{
ring++;
if (ring>7)
{
ring=0;
printf("ATH\r\n");
if (flag_on==0)
{
PORTC.2=1;
delay_ms(2000);
PORTC.3=1;//relay ON
flag_on=1;
delay_ms(2000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah ON");
putchar(26);
printf("\r\n");
}
else
{
PORTC=0x00;//relay OFF
flag_on=0;
delay_ms(2000);
printf("AT+CMGS=089619224815\r\n");
delay_ms(1000);
printf("sudah OFF");
putchar(26);
printf("\r\n");
}
}
}
}
};
}
=====================================================
syntax nyolong punya temen
masih bingung untuk inisial 2 motor servo nya gimana ia ?
dan kode tambahanNya juga
hHeeeee..............
![kontrol servo via sms](https://s.kaskus.id/images/2012/12/17/5004215_20121217033631.png)
0
785
1
![Guest](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
![Hardware Computer](https://s.kaskus.id/r200x200/ficon/image-243.png)
Hardware Computer![KASKUS Official KASKUS Official](https://s.kaskus.id/kaskus-next/next-assets/images/icon-official-badge.svg)
31.1KThread•10KAnggota
Urutkan
Terlama
![Guest](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
Komentar yang asik ya