Помогите Разобраться

antipod
antipod аватар
Offline
Зарегистрирован: 20.08.2013
   int action = 0;
        void setup() {
        Serial.begin(115200);
        pinMode(4, OUTPUT); // направление М1
        pinMode(5, OUTPUT); // скорость М1
        pinMode(7, OUTPUT); // скорость М2
        pinMode(6, OUTPUT); // направление М2
        }
        void loop() {
              if (Serial.available() > 0){
           //Serial.print("1");
               int inByte = Serial.read();
             
             // отсылаем то, что получили
               switch (inByte){
              
               	  case 's': 
                  digitalWrite(4,HIGH);  
	          analogWrite(5,128);    
	          analogWrite(6,128);       
	          digitalWrite(7,LOW);    
	          break;
	          case 'w':
                  digitalWrite(4, LOW);
                  analogWrite(5,128);
	          analogWrite(6,128);
	          digitalWrite(7, HIGH);
	          break;
	          case 'a':   
	          digitalWrite(4, HIGH);
	          analogWrite(5, 128);
	          analogWrite(6, 128);
	          digitalWrite(7, HIGH);
	          break;
                  case 'd':  
	          digitalWrite(4,LOW);
	          analogWrite(5,128);
	          analogWrite(6,128);
                  digitalWrite(7,LOW);
	          break;
	          case 'q':  
	          digitalWrite(4, LOW);
	          digitalWrite(5, LOW);
	          digitalWrite(6, LOW);
	          digitalWrite(7, LOW);
	          break;
              }
               
            Serial.print("'");
            if(inByte>=32)Serial.write(inByte);
	    Serial.print("' - ");
	    Serial.println(inByte,DEC);
                 
                    }
           }

С монитором работает, спасибо огромное что направили) буду завтра его с TPlink-ом  дружить. А на счет 13го пина если скажется положительно на  работе перепаяю

sva1509
Offline
Зарегистрирован: 07.12.2012

Не стоит у Вас шимы на 5, 6 ноге, а у меги это 3, 4 таймер оба 16-ти битные. Так что все нормально.

к тому же analogWrite(); их всеравно приводит к 8 битам.

PWM: 2 to 13 and 44 to 46. Provide 8-bit PWM output with the analogWrite() function.

ps: у вас не правильно написаны ремарки 4,7 направление 5,6 скорость

и в case 'q': замените digitalWrite(); 5,6 - LOW на analogWrite();5,6 - 0; это необходимо для остановки  таймеров. digitalWrite(); просто отключит пин от таймера, а analogWrite(); остановит таймер.

 

 

antipod
antipod аватар
Offline
Зарегистрирован: 20.08.2013

я по мануалу к шилду выставил, и от ремарок плясал расставляя значения кейсов

sva1509
Offline
Зарегистрирован: 07.12.2012

я нашел ваш шилд там есть 2 варианта перемычек PLL и PWM вам необходимо выбрать PWM для данной программы. Там прямо на шилде указано Е1-5,М1-4,Е2-6,М2-7 так вот у вас Е должны быть analogWrite();

 

antipod
antipod аватар
Offline
Зарегистрирован: 20.08.2013

Я его изначально в PWM переключил, уже две недели тыркаюсь с шасси) перемычки изучил за это время. Нужно будет с сервоприводом еще разобраться, и команды в веб интерфейфе поменять...

sva1509
Offline
Зарегистрирован: 07.12.2012

я бы написал так:

int action = 0;

     void setup() {

     Serial.begin(115200);
     // для шилда PWM
     pinMode(4, OUTPUT); // направление М1

     pinMode(5, OUTPUT); // скорость E1

     pinMode(7, OUTPUT); // направление М2

     pinMode(6, OUTPUT); // скорость E2

     }

     void loop() {

           if (Serial.available() > 0){

        //Serial.print("1");

            int inByte = Serial.read();

           

          // отсылаем то, что получили

            switch (inByte){

            

               case 's':

               digitalWrite(4,HIGH);  //правое вращение

           analogWrite(5,128);   // половина скорости

           analogWrite(6,128);   // половина скорости   

           digitalWrite(7,LOW);   // левое вращение

           break;

           case 'w':

               digitalWrite(4, LOW); // левое вращение

               analogWrite(5,128); // половина скорости

           analogWrite(6,128); // короче скорость у вас одинаковая

           digitalWrite(7, HIGH); // правое вращение

           break;

           case 'a':  

           digitalWrite(4, HIGH);  // правое вращение

           analogWrite(5, 128);

           analogWrite(6, 128);

           digitalWrite(7, HIGH); // правое вращение

           break;

               case 'd': 

           digitalWrite(4,LOW); // левое вращение

           analogWrite(5,128);

           analogWrite(6,128);

               digitalWrite(7,LOW); // левое вращение

           break;

           case 'q': 

           digitalWrite(4, LOW);

           analogWrite(5, 0); // стоп 1 -вый канал 

           analogWrite(6, 0); // стоп 2 -ой канал

           digitalWrite(7, LOW); // не имеет значения так как каналы выкл

           break;

           }

             
////////// тестовый вывод
         Serial.print("'");

         if(inByte>=32)Serial.write(inByte);

     Serial.print("' - ");

     Serial.println(inByte,DEC);
/////////////////////////////////
               

                 }

        }