Отправка значения переменника и кнопки в serial-порт. Не работает.

wenom86
Offline
Зарегистрирован: 04.11.2012

Здравствуйте. Не могли-бы вы ткнуть меня носом, почему не работает программа. Требуется принять значение с 4 аналоговых входов и 6-7 кпопок и отправить в serial-порт. Мне хотя-бы показать по 1 аналоговому и 1 цифровому входу, а дальше я допилю.  

Программу пишу первый раз, многое еще не понимаю, а чем дольше читаю, тем больше утопаю в море инфы).

Вот код передатчика


// Передатчик команд управления v0.6
// Органы управления - 4 переменника, 9 кнопок.
// Исполнительные механизмы - 2мотора-вибратора, 1 светодиод

//Цель:
// а)при нажатии кнопки 1-4 отправить в сериал-порт информацию о текущем значении. (кнопка с фиксацмей значения)
// б)при нажатии кнопки 7-12 отправить в сериал-порт информацию о текущем значении. (кнопка без фиксации значения
// в)при вращении ручки потенциометра 1-4 отправить в сериал-порт информацию о текущем значении.


int pot1x = 0; //Обьявляем А0 аналоговый пин считывания показаний потенциометра1 (ось x) (погружение-всплытие)
int pot1y = 1; //Обьявляем А1 аналоговый пин считывания показаний потенциометра1 (ось y) (неиспользуется)
int pot2x = 2; //Обьявляем А0 аналоговый пин считывания показаний потенциометра2 (ось x) (влево-вправо)
int pot2y = 3; //Обьявляем А1 аналоговый пин считывания показаний потенциометра2 (ось y) (вперед-назад)
int knopka1 = 3; //кнопка1 подключена к 3 цифровому контакту (фиксируемая) (освещение 1)
int knopka2 = 4; //кнопка2 подключена к 4 цифровому контакту (фиксируемая) (освещение 2)
int knopka3 = 5; //кнопка3 подключена к 5 цифровому контакту (фиксируемая) (освещение 3)
int knopka4 = 6; //кнопка4 подключена к 6 цифровому контакту (фиксируемая) (освещение 4)
int knopka7 = 7; //кнопка7 подключена к 7 цифровому контакту (манипулятор - расжать)
int knopka8 = 8; //кнопка8 подключена к 8 цифровому контакту (манипулятор - сжать)
int knopka9 = 9; //кнопка9 подключена к 9 цифровому контакту (камера - вверх)
int knopka11 = 10; //кнопка11 подключена к 10 цифровому контакту (камера - вниз)
int knopka12 = 11; //кнопка12 подключена к 11 цифровому контакту (резервная)

int motorPin = 12; //моторы в пульте управления подключены к 12 цифровому контакту
int ledPin = 13; //светодиод в пульте управления подключен к 13 цифровому контакту



void setup()
{
analogReference(DEFAULT);       //Объявляем диапазон чтения с аналогового порта. Значение DEFAULT оставляем, если используем переменные резистры (в моем случае 10ком) (считывание от 0 до 5вольт)
Serial.begin(9600);             //Включаем сериал-порт на скорости 9600
pinMode(ledPin, OUTPUT);        // Инициализируем 13 выход под светодиод.
pinMode(motorPin, OUTPUT);      // Инициализируем 12 выход под вибраторы.
  
pinMode(knopka1, INPUT);        //отмечаем контакт кнопки 1 - как вход
digitalWrite(knopka1, HIGH);    // включить подтягивающий резистор к питанию.
pinMode(knopka2, INPUT);        //отмечаем контакт кнопки 2 - как вход
digitalWrite(knopka2, HIGH);    // включить подтягивающий резистор к питанию.
pinMode(knopka3, INPUT);        //...
digitalWrite(knopka3, HIGH);
pinMode(knopka4, INPUT);       
digitalWrite(knopka4, HIGH);
pinMode(knopka7, INPUT);      
digitalWrite(knopka7, HIGH);
pinMode(knopka8, INPUT);       
digitalWrite(knopka8, HIGH);
pinMode(knopka9, INPUT);       
digitalWrite(knopka9, HIGH);
pinMode(knopka11, INPUT);      
digitalWrite(knopka11, HIGH);
pinMode(knopka12, INPUT);       
digitalWrite(knopka12, HIGH);
}

 
 
 
void loop()
{
   
  
Serial.write('a');                        //метка начала передачи значения канала "а"
Serial.println(analogRead(pot1x), DEC);     //выдаст в порт значение потенциометра 1x 
Serial.write('b');                        //метка начала передачи значения канала "b"
Serial.println(analogRead(pot1y), DEC);     //выдаст в порт значение потенциометра 1y 
Serial.write('c');                        
Serial.println(analogRead(pot2x), DEC);      
Serial.write('d'); 
Serial.println(analogRead(pot2y), DEC); 
Serial.write('e'); 
Serial.println(digitalRead(knopka1));  //кнопка 1 
Serial.write('f'); 
Serial.println(digitalRead(knopka2));  //кнопка 2 
Serial.write('j');
Serial.println(digitalRead(knopka3));  //кнопка 3
Serial.write('h');
Serial.println(digitalRead(knopka4));  //кнопка 4
Serial.write('i');
Serial.println(digitalRead(knopka7));  //кнопка 7
Serial.write('g');
Serial.println(digitalRead(knopka8));  //кнопка 8
Serial.write('k');
Serial.println(digitalRead(knopka9));  //кнопка 9
Serial.write('l');
Serial.println(digitalRead(knopka11));  //кнопка 11
Serial.write('m');
Serial.println(digitalRead(knopka12));  //кнопка 12 
  
  
  
Serial.print("\r\n"); //выведет символы "\r\n" – перевод строки
Serial.print("\r\n"); //выведет символы "\r\n" – перевод строки
delay(1000);
 }



 

 

 

wenom86
Offline
Зарегистрирован: 04.11.2012

А вот приемника

int knopka9=0;
int knopka11=0;
int knopka12=0;
  
 void setup()
 {
   pinMode(9,OUTPUT);
   Serial.begin(9600);
 }
  
 void loop()
 {
   if(Serial.available() && Serial.read() == 'k')
   {
          knopka9=Serial.read()-'0';
     Serial.flush();
     knopka9=map(knopka9, 1, 0, 0, 255);
     analogWrite(9,knopka9);
   }

   delay(50);
 }

 

maksim
Offline
Зарегистрирован: 12.02.2012

Можем и ткнуть. Зачем так делать? http://arduino.ru/forum/programmirovanie/peredacha-znachenii-po-serial-chto-ya-delayu-ne-tak

maksim
Offline
Зарегистрирован: 12.02.2012

Поиском пользоваться умеете? Тем на эту тему (тавтология) здесь на форуме с десяток имеется. В верхнем правом углу пишите "управление по сериал" и просматриваете найденые темы.

wenom86
Offline
Зарегистрирован: 04.11.2012

во что форум животворящий делает! ковырялся 2 дня вместо того, чтобы правильно сформулировать поиск. впреть буду более внимательным. Больое спасибо.