ARDUINO NANO TANK

Аватар пользователя
admin
Администратор
Сообщений: 179
Зарегистрирован: 10 июн 2017, 16:49
Откуда: Rakun City
Контактная информация:

ARDUINO NANO TANK

Сообщение admin » 25 июл 2018, 06:48

RECIVER :
ТА ЧТО В ТАКЕ СТОИТ .И БУДЕТ ПУЛЬТ ОТДЕЛЬНЫЙ КОД НИЖЕ

Код: Выбрать все




#define A1_A 9 // выходы на драйвер
#define A1_B 10


#define AY_A 11 // выходы на драйвер
#define AY_B 12





//////////////////////////////////////////////////motot


 
#include "math.h"




//wifii&server

#include <OneWire.h>
//////////////////////////////////////////////////////////////shlaki////////////////////////////////////////////////////



int fug;

int fug1;
int fug2;


int fug22;

/////////////////////////////////////////////////////parol
int kiop3 = 0;
int pam = 50;
int passwordkg[6] ={8,3,2,1,9,0};

int parolking = 0;
int parolvvod[6] = {0,0,0,0,0,0};
int i1p = 0;
int yach = 0;

int send_codekg = 0;
int send_codezoy = 0;

int send_code = 1;

int yacheyka = 0;
///////////////////////////////////////////////////////////////////////



 int starres = 0;

int pakiweb = 0;
int bitnumber = 0;
int shirt = 0;

//wifii&server end/////////////////////////////////////

//menu

boolean backlight = true;
int contrast=50;
int kiop=0;
int menuitem = 1;
int page = 1;

int pagero = 0;

int smena = 1;//smena sig

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0; 
int selectButtonState = 0;         
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;





//menu end



#define rxPin 2  //d7
///#define TX 6 //d6

///#define mass 2
///#define vcc 4


///#define fugabum 3 //d6
///#define diod 2 //d6



int ing = 0;
int starlineCounter = 0;
int starlinePreambula = 0;
static long StarLineCode1 = 0; // first part
static long StarLineCode2 = 0; // last part
static long invertStarLineCode1 = 0; // first part
static long invertStarLineCode2 = 0; // last part
String code = "";
boolean bValidPacket=false;
int decodeMethod = 1;
int lastRxValue = 0;
int tempRxValue = 0;
unsigned long lastRxTime = 0;
unsigned long tempTime = 0;
 
//keeloq
int keeloqHeader=0;

int keeloqCounter = 0;

int starlineZCounter = 0;

int starlineZpreambulaCounter = 0;
int keeloqPreambula = 0;

int stralineHeader=0;


static long keeloqCode1 = 0; // first part
static long keeloqCode2 = 0; // last part
static long invertkeeloqCode1 = 0; // first part
static long invertkeeloqCode2 = 0; // last part
String keecode = "";


boolean keebValidPacket=false;

int keelastRxValue = 0;
int keetempRxValue = 0;
unsigned long keelastRxTime = 0;
unsigned long keetempTime = 0;

//пробуем выброс
//keelog start
unsigned long difTime = 0;
unsigned long difTime2 = 0;
int keelog_state = 0;
int keelogCounter = 0;
byte keelog_code[9];
byte keelog_codePAK2[9];
byte keelog_codePAK1[9];
byte hugaz[9];
byte hugazk[9];
byte hugazi[9];
byte starline_code[9];
byte starline_codePAK2[9];
byte starline_codePAK1[9];






int starline_state = 0;
byte kefang[9];


byte starline_codePAK2zapis[9];
byte starline_codePAK1zapis[9];

byte starline_codePAK2zapisSBTR[9];
byte starline_codePAK1zapisSBTR[9];


byte keelog_codePAK2zapis[9];
byte keelog_codePAK1zapis[9];


byte keelog_codePAK2zapisSBTR[9];
byte keelog_codePAK1zapisSBTR[9];

byte hugazS[9];
byte hugaziS[9];

byte hugazK[9];
byte hugaziK[9];



/////////////////////////////////////////////////VVODNIE

byte VVOD1[9];
byte VVOD2[9];

String readString;
// --------------------
byte CODE[8];
int x=0;

int k=0;//schet keeloq 
int kk  =0; //shet star line

int starkk = 0;

//lcd

//#include <SPI.h>
#include <Wire.h>









byte fugas[9];


 





 
void setup() {

  //    pinMode (mass, OUTPUT);
/// pinMode (vcc, OUTPUT);


// digitalWrite (mass, LOW);
///
///      digitalWrite (vcc, HIGH);

  //////////////////menu





 
  Serial.begin(115200);
 

  //lcd




Serial.print("TANK START");
 
  //end lcd
pinMode(rxPin, INPUT);
//pinMode(buttonvibros,INPUT_PULLUP);



  lastRxValue = digitalRead(rxPin);
lastRxTime = micros();

//kee
  keelastRxValue = digitalRead(rxPin);
keelastRxTime = micros();
  delay(100);


 


 

 pinMode (A1_A, OUTPUT);
  pinMode (A1_B, OUTPUT);

   pinMode (AY_A, OUTPUT);
  pinMode (AY_B, OUTPUT);

    digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, LOW);

      digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);
 




   
}
 

void loop() {




startgrabber();






 digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, LOW);
 
  digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);





     
}







void startgrabber(){






tempRxValue = digitalRead(rxPin);

if(tempRxValue != lastRxValue){
tempTime = micros();
difTime = tempTime - lastRxTime;
difTime2 = tempTime - lastRxTime;

starline_get();
//grab(tempTime - lastRxTime, lastRxValue);

lastRxTime = tempTime;
lastRxValue = tempRxValue;


 
}
}
 



void starline_get(){
    bValidPacket = false;
    if(starline_state==0){//ждем преамбулу и хедер
      if(difTime2 > 900 && difTime2 < 1100 && lastRxValue ==1 ){
        starlineZpreambulaCounter ++;
       
      }
   

      if(starlineZpreambulaCounter==6){
         
            starline_state=1;         
        }

       //  else{       
     //  starlineZCounter = 0;
     // }
 
    }

    /////////////////////////////////////////////////////PREAMBULA STARA///////////////////////////////////////////////////////////////////////////
    else if(starline_state==1){// получаем биты
      if(difTime2 > 350 && difTime2 < 650 && lastRxValue == 1){// получили 1
        if(decodeMethod==0){
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]>>1)|B10000000;
        }
        else{
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]<<1)|B00000000;
        }
        bValidPacket = true;
      }
      else if(difTime2 > 150 && difTime2 < 350 && lastRxValue == 1){
        if(decodeMethod==0){
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]>>1)|B00000000;
        }
        else{
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]<<1)|B00000001;
        }
        bValidPacket = true;
      }
      else if(lastRxValue == 0){
      }
      else{
        starline_state=1;
        starlineZCounter = 0;
      }
     
      if(bValidPacket){
        starlineZCounter++;
        if(starlineZCounter==64){           //64ili66
          starline_vardump();
          starlineZCounter = 0;
          starline_state = 0;
          starlineZpreambulaCounter = 0; /////////novshetch
          starkk++;                   /////////shetchik
 




       
        }
      }
    }
}









































 
 




















///uuuaaaaaaaa che ya nadelal)))))))) IIIIIIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSTAAAAAAAAAAAAAAAAARRRRRRRRRRzzzzzzz


//statline pomba
void starline_vardump(){
  if(decodeMethod == 0){
    Serial.println(" - starline origin - ");
  }
  else{
    Serial.println(" - starline invert - ");
  }

 
  Serial.print(starline_code[0], HEX);
  Serial.print(starline_code[1], HEX);
  Serial.print(starline_code[2], HEX);
  Serial.print(starline_code[3], HEX);
  Serial.println("-hop");
  Serial.print(starline_code[4], HEX);
  Serial.print(starline_code[5], HEX);
  Serial.print(starline_code[6], HEX);
  Serial.println("-fix");
  Serial.print(starline_code[7], HEX);
  Serial.println("-btn");
  Serial.print(starline_code[8], HEX);
  Serial.println("-dop");


fug =starline_code[0];



fug1=starline_code[1];
fug2=starline_code[2];

Serial.println(fug);
Serial.println(fug1);
Serial.println(fug2);

Serial.println("CHZN");





 


 
 
 








 
if(fug==1&&fug1==1&&fug2==1){

  Serial.println(" levo ");

///    digitalWrite(diod, HIGH);

/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////



     digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, HIGH);
  delay(150); 
     // выключаем мотор 
  digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);

 



 
}

if(fug==2&&fug1==2&&fug2==2){

  Serial.println(" pravo ");


      digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, HIGH);
  delay(150); 
     // выключаем мотор 
  digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, LOW);

 



 
}


if(fug==3&&fug1==3&&fug2==3){

  Serial.println(" vverh ");


      digitalWrite (AY_A, HIGH);
  digitalWrite (AY_B, LOW);
      digitalWrite (A1_A, HIGH);
  digitalWrite (A1_B, LOW);

///#define A1_A 9 // выходы на драйвер
///#define A1_B 10
// 
  delay(500); 
     // выключаем мотор 
  digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);

 



 
}


if(fug==4&&fug1==4&&fug2==4){

  Serial.println(" vniz ");


       digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, HIGH);
      digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, HIGH);

  delay(500); 
     // выключаем мотор 
  digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);

 



 
}
 
 



   
}
     
     
 
 












 






























Пульт
TX

Код: Выбрать все







const uint8_t PinX = A1;
float X;

 const uint8_t PinY = A2;
float Y;

#define A1_A 8 // выходы на драйвер
#define A1_B 9


#define AY_A 10 // выходы на драйвер
#define AY_B 11

#define mass 2
#define vcc 4


int decodeMethod = 1;

byte starline_codePAK2zapis[9];
byte starline_codePAK1zapis[9];

byte starline_codePAK3zapis[9];
byte starline_codePAK4zapis[9];

int starline_state = 0;



#define TX 5 //d6


void setup(){

       pinMode (mass, OUTPUT);
  pinMode (vcc, OUTPUT);


 digitalWrite (mass, LOW);

      digitalWrite (vcc, HIGH);

      pinMode(TX, OUTPUT);

    pinMode(PinX, INPUT);
   
    pinMode(PinY, INPUT);


 pinMode (A1_A, OUTPUT);
  pinMode (A1_B, OUTPUT);

   pinMode (AY_A, OUTPUT);
  pinMode (AY_B, OUTPUT);
  Serial.begin(115200);
    digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, LOW);

      digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);
 
}


void loop(){

  digitalWrite (A1_A, LOW);
  digitalWrite (A1_B, LOW);
 
  digitalWrite (AY_A, LOW);
  digitalWrite (AY_B, LOW);
 X = (120.0/20.0) * (float)(analogRead(PinX)) / 1024.0; // LiPo battery voltage in volts
 
  Serial.println("OX = "); Serial.print(X); Serial.println(" X");

  Y = (120.0/20.0) * (float)(analogRead(PinY)) / 1024.0; // LiPo battery voltage in volts
 
  Serial.println("OY = "); Serial.print(Y); Serial.println(" Y");


  /////////////////////////////////XXXXXXXXXXXXXXXXXX///////////////////////////

  if(X>3.10){


posilstarline1zapis();
  }

 
  if(X<1){


    posilstarline2zapis();
  }

  //////////////////////////////YYYYYYYYYYYYYYYYYYYYY///////////////////////////////////////////

    if(Y>3){


   posilstarline3zapis();
  }

 
  if(Y<1){


 posilstarline4zapis();
  }


 
}














 void posilstarline1zapis(){


////////////////////schet paketov


   
   starline_codePAK1zapis[0]=1;
  starline_codePAK1zapis[1]=1;
   starline_codePAK1zapis[2]=1;
   starline_codePAK1zapis[3]=0;
   starline_codePAK1zapis[4]=0;
   starline_codePAK1zapis[5]=0;
   starline_codePAK1zapis[6]=0;
   starline_codePAK1zapis[7]=0;
   starline_codePAK1zapis[8]=0;


 starline_sendPAK2(starline_codePAK1zapis);



 
 


 
   
  starline_state = 0;
 //for(int i = 0; i<9; i++){
//    starline_code[i]=0;
//  }
  }
 




 void posilstarline2zapis(){

 
////////////////////schet paketov

 
   starline_codePAK2zapis[0]=2;
  starline_codePAK2zapis[1]=2;
   starline_codePAK2zapis[2]=2;
   starline_codePAK2zapis[3]=0;
   starline_codePAK2zapis[4]=0;
   starline_codePAK2zapis[5]=0;
   starline_codePAK2zapis[6]=0;
   starline_codePAK2zapis[7]=0;
   starline_codePAK2zapis[8]=0;


 starline_sendPAK2(starline_codePAK2zapis);



 
 


 
   
  starline_state = 0;
// for(int i = 0; i<9; i++){
//    starline_code[i]=0;
//  }
 
  }


   void posilstarline3zapis(){

 
////////////////////schet paketov

 
   starline_codePAK3zapis[0]=3;
  starline_codePAK3zapis[1]=3;
   starline_codePAK3zapis[2]=3;
   starline_codePAK3zapis[3]=0;
   starline_codePAK3zapis[4]=0;
   starline_codePAK3zapis[5]=0;
   starline_codePAK3zapis[6]=0;
   starline_codePAK3zapis[7]=0;
   starline_codePAK3zapis[8]=0;


 starline_sendPAK2(starline_codePAK3zapis);



 
 


 
   
  starline_state = 0;
// for(int i = 0; i<9; i++){
//    starline_code[i]=0;
//  }
 
  }



   void posilstarline4zapis(){

 
////////////////////schet paketov

 
   starline_codePAK4zapis[0]=4;
  starline_codePAK4zapis[1]=4;
   starline_codePAK4zapis[2]=4;
   starline_codePAK4zapis[3]=0;
   starline_codePAK4zapis[4]=0;
   starline_codePAK4zapis[5]=0;
   starline_codePAK4zapis[6]=0;
   starline_codePAK4zapis[7]=0;
   starline_codePAK4zapis[8]=0;


 starline_sendPAK2(starline_codePAK4zapis);



 
 


 
   
  starline_state = 0;
// for(int i = 0; i<9; i++){
//    starline_code[i]=0;
//  }
 
  }




  void starline_sendPAK2(byte* starline_codePAK2){
  Serial.println("- sending staraylayn -ss-");
  for(int i = 0; i<9; i++){
    Serial.print(starline_codePAK2[i], HEX);
    Serial.print(" -zz ");
  }
  for(int i = 0; i<13; i++){//посылаем преамблу
    send_meander(1000);
  }
//  digitalWrite(TX, HIGH);
 // delayMicroseconds(400);
//  digitalWrite(TX, LOW);
//  delayMicroseconds(4000);//посылаем хедер
 
  for( int i = 0; i<9; i++){
    if(decodeMethod==1){
      for(int i2 = 7;i2>=0;i2--){
        if(bitRead(starline_codePAK2[i], i2)){
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else{
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else{
        for(int i2 = 0;i2<8;i2++){
          if(!bitRead(starline_codePAK2[i], i2)){
            digitalWrite(TX, HIGH);
            delayMicroseconds(250);
            digitalWrite(TX, LOW);
            delayMicroseconds(250);
          }
          else{
            digitalWrite(TX, HIGH);
            delayMicroseconds(500);
            digitalWrite(TX, LOW);
            delayMicroseconds(500);
          }
       }
    }
   
  }
}


void send_meander(int time)//pra meandr

{
  digitalWrite(TX, HIGH);
  delayMicroseconds(time);
  digitalWrite(TX, LOW);
  delayMicroseconds(time);
}

void SendStarlinePreambula()
{
  for (byte i=0; i<=10; i++)
    send_meander(1000);
}

void SendStarlineBit(byte b)
{
  if (b)
    send_meander(250); // 1
  else 
    send_meander(500); // 0
}

void SendStarline(unsigned char *TCODE, unsigned int S)
{
  for (int j=0;j<10;j++)                                  // посылку посылаем как и брелок - 10 раз подряд.
  {
    SendStarlinePreambula();                              // посылаем преамбулу
    for (byte i=0;i<S;i++)                                // перебор масива (8 x 8 = 64 bits)
    {
    for (int x=0;x<8;x++){
    SendStarlineBit(!bitRead(TCODE[i], x));               // побитово перебираем, инвертируе и посылаем код
    }
    }
  }
  digitalWrite(TX, HIGH);
}

void stop(){

Serial.println("STOP ");



}



Вернуться в «Ардуино»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей