top of page

كود دائرة المستقبل 

 

#include <VirtualWire.h>

//pin map, RX and pwm analogOutupts to PNP transistors

#define RX 3

#define pwmledRED 5

#define pwmledGREEN 6

#define pwmledBLUE 11

 

//arrays of data for build the final message

char datarraycharred  [(sizeof(int)*4+1)];

char datarraychargreen[(sizeof(int)*4+1)];

char datarraycharblue [(sizeof(int)*4+1)];

char datarraymodo     [(sizeof(int)*4+1)];

char datarrayclear    [(sizeof(int)*4+1)]={"FFFF"};//tricky thing to reorder the data

char datatotal        [(sizeof(int)*4+1)*4+4];

 

int datared =0;

int datagreen =0;

int datablue =0;

int bandera=0;

int i=0,j=0,index=0;

int indexchill=0;

int datamodo=3;//initialice with idle state all LED turned off

 

int ired=0,igreen=0,iblue=0;

 

void setup() {

Serial.begin(9600);

 

 

// VirtualWire

// Initialise the IO and ISR

// Required for DR3100

vw_set_rx_pin(RX);       //Config pin as RX

vw_set_ptt_inverted(true);

// Bits per sec

vw_setup(2000);

// Start the receiver PLL running

vw_rx_start();

pinMode(pwmledRED,OUTPUT); //trt--->leds outuput

pinMode(pwmledGREEN,OUTPUT);

pinMode(pwmledBLUE,OUTPUT);

 

}

 

 

 

void loop(){

uint8_t buf[VW_MAX_MESSAGE_LEN];

uint8_t buflen = VW_MAX_MESSAGE_LEN;

 

// Non-blocking

if (vw_get_message(buf, &buflen))

{

int i;

 

// Message with a good checksum received, dump it.

for (i = 0; i < buflen; i++)

{

// Fill Sensor1CharMsg Char array with corresponding

// chars from buffer.

datatotal[i] = char(buf[i]);

}

 

datatotal[buflen] = '\0';

 

// Convert Sensor1CharMsg Char array to TRUE integer, not the direct ASCII equivalent shit

chartointconvert();

}

 

 

if(datamodo==0)// chill wabing colour mode

modochill();

 

 

 

//write outupts

analogWrite(pwmledRED,datared);

analogWrite(pwmledGREEN,datagreen);

analogWrite(pwmledBLUE,datablue);

 

 

 

// DEBUG

Serial.print(datatotal);

Serial.print("      ");

Serial.print(datarraymodo);

Serial.print("  ");

Serial.print(datarraycharred);

Serial.print("  ");

Serial.print(datarraychargreen);

Serial.print("  ");

Serial.print(datarraycharblue);

Serial.print("     ");

Serial.print(datamodo);

Serial.print("  ");

Serial.print(datared);

Serial.print("  ");

Serial.print(datagreen);

Serial.print("  ");

Serial.println(datablue);

delay(50);

 

}

 

 

 

 

 

 

 

 

 

 

void chartointconvert(){

bandera=0;

strcpy (datarraymodo,datarrayclear);

strcpy (datarraycharred,datarrayclear);

strcpy (datarraychargreen,datarrayclear);

strcpy (datarraycharblue,datarrayclear);

 

 

index=0;

for(i=0;datatotal[i]!='a';i++)

{

datarraymodo[index]=datatotal[i];

index++;

}

i++;

j=i;

index=0;

 

for(i=j;datatotal[i]!='a';i++)

{

datarraycharred[index]=datatotal[i];

index++;

}

i++;

j=i;

index=0;

 

for(i=j;datatotal[i]!='a';i++)

{

datarraychargreen[index]=datatotal[i];

index++;

}

i++;

j=i;

index=0;

 

for(i=j;datatotal[i]!='a';i++)

{

datarraycharblue[index]=datatotal[i];

index++;

}

 

////arranging the char array

//WE NEED TRUE INTEGER DATA

for(i=0;i<4;i++)

{

if (datarraymodo[3]=='F')

{

datarraymodo[3]=datarraymodo[2];

datarraymodo[2]=datarraymodo[1];

datarraymodo[1]=datarraymodo[0];

datarraymodo[0]='0';

}

}

 

for(i=0;i<4;i++)

{

if (datarraycharred[3]=='F')

{

datarraycharred[3]=datarraycharred[2];

datarraycharred[2]=datarraycharred[1];

datarraycharred[1]=datarraycharred[0];

datarraycharred[0]='0';

}

}

 

for(i=0;i<4;i++)

{

if (datarraychargreen[3]=='F')

{

datarraychargreen[3]=datarraychargreen[2];

datarraychargreen[2]=datarraychargreen[1];

datarraychargreen[1]=datarraychargreen[0];

datarraychargreen[0]='0';

}

}

 

for(i=0;i<4;i++)

{

if (datarraycharblue[3]=='F')

{

datarraycharblue[3]=datarraycharblue[2];

datarraycharblue[2]=datarraycharblue[1];

datarraycharblue[1]=datarraycharblue[0];

datarraycharblue[0]='0';

}

}

 

datamodo = atoi(datarraymodo);

if(datamodo!=0)

{

datared = atoi(datarraycharred);

datagreen = atoi(datarraychargreen);

datablue = atoi(datarraycharblue);

datared=map(datared,0,1023,0,255);

datagreen=map(datagreen,0,1023,0,255);

datablue=map(datablue,0,1023,0,255);

}

}

 

 

void modochill()

{

//when first time on chill mode, set random numbers

if(indexchill==0){

datared=random(170, 255);

datagreen=random(85, 170);

datablue=random(0, 85);

indexchill=1;

 

}

 

//after first time just wave the values

if(datared>=250)

{ired=1;}

if(datared<=3)

{ired=0;}

if(ired==0)

{datared=datared+3;}

if(ired==1)

{datared=datared-3;}

 

if(datagreen>=240)

{igreen=1;}

if(datagreen<=3)

{igreen=0;}

if(igreen==0)

{datagreen=datagreen+3;}

if(igreen==1)

{datagreen=datagreen-3;}

 

 

if(datablue>=240)

{iblue=1;}

if(datablue<=3)

{iblue=0;}

if(iblue==0)

{datablue=datablue+3;}

if(iblue==1)

{datablue=datablue-3;}

 

 

 

}

bottom of page