управления яркостью светодиода при помощи андроид app и arduino

Нет ответов
loksavejs
Offline
Зарегистрирован: 26.01.2017
Приветствую товарищи ! Вот на днях написал андроид приложения https://play.google.com/store/apps/details?id=comartur.wix.loksavejs.slider .Принцип работы прост :
программа считывает положения ползунка и превращает в цифры 0 - 100  пересылая их через блютуз arduino платье на которой в свою очередь имеется блютузприемник HC-06.Для блютуз приемника имеются альтернативы ; HC - 05 ,HC - 07,"Arduino BT (Bluetooth)" ,"Bluetooth Shield" и другие ... 
 
схема подключения :
Android sketch:

/*
Android bluetooth slider
*/

int led = 11;              

int incomingByte ;   // for incoming serial data

int temp,temp2,temp3;



void setup() {
  pinMode(led, OUTPUT);      // sets the digital pin as output
  Serial.begin(9600);        // setup serial
}

void loop() {
  
        if (Serial.available() > 0) {

                incomingByte = Serial.read();

//...........................................convert incoming data to 0-250 int
                if(incomingByte==65){temp2=10;}//10 "A"
                if(incomingByte==66){temp2=20;}//20 "B"
                if(incomingByte==67){temp2=30;}//30 "C"
                if(incomingByte==68){temp2=40;}//40 "D"
                if(incomingByte==69){temp2=50;}//50 "E"
                if(incomingByte==70){temp2=60;}//60 "F"
                if(incomingByte==71){temp2=70;}//70 "G"
                if(incomingByte==72){temp2=80;}//80 "H"
                if(incomingByte==73){temp2=90;}//90 "I"
                if(incomingByte==74){temp2=0; }//00 "J"
                
                if(incomingByte==48){temp=0;}//0
                if(incomingByte==49){temp=1;}//1
                if(incomingByte==50){temp=2;}//2
                if(incomingByte==51){temp=3;}//3
                if(incomingByte==52){temp=4;}//4
                if(incomingByte==53){temp=5;}//5
                if(incomingByte==54){temp=6;}//6
                if(incomingByte==55){temp=7;}//7
                if(incomingByte==56){temp=8;}//8
                if(incomingByte==57){temp=9;}//9
             
                temp3=(temp+temp2);   // Here temp3 contains 0-100 value
                temp3=temp3*10/4;     // Converts to 0-250
//.............................................................................

                analogWrite(led,temp3); // sets value to output led pin
                
                }
}

Андроид приложения присылает два поочередных ASCII байта : первый буква A ,B ,C ... означающий десяток , второй байт цифра 0 - 9 .Зачем эти два значения складываются , для получения значения 0 - 100 . Поскольку максимальное значения для PWM сигнала 255 каждое полученное число умножается на 2.5 .