Показано с 1 по 7 из 7

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #3
    Новичок
    Регистрация
    31.05.2010
    Возраст
    39
    Сообщений
    8
    Вес репутации
    192

    По умолчанию Re: Ввод переменных через Serial

    Починил частично свой код, благодаря manu_245. Но есть проблемы.
    1. Вводимые переменные могут принимать значение от 0 до 32000
    2. Код manu_245, как и моя производная от него, кушает один байт из Serial.read(), а из п.п 1 их может быть до 5 сразу.
    3. На int назначается ASCII код символа, а не он сам.
    Вот мой скретч:
    PHP код:
    int abcset
     
    void setup(void

      
    Serial.begin(9600); 
      
    pinMode(13,OUTPUT);


    void loop(void
    {  
      if(
    set==0//ЕСЛИ SET не равен 1, то считываем переменные
        
    Serial.println("Vvedi A");
          
    a=readdata(); // назначаем а значение из функции readdata()
          
    Serial.println("Vvedi B");
          
    b=readdata();
          
    Serial.println("Vvedi C");
          
    c=readdata();
          
    set=1// Запрещаем более считывать переменные, и начинаем выполнять дальнейший код
        
    }

       
    Serial.print("Prisvoeno A ");
       
    Serial.print(aDEC);
       
    Serial.println();
       
    Serial.print("Prisvoeno B ");
       
    Serial.print(bDEC);
       
    Serial.println();
       
    Serial.print("Prisvoeno C ");
       
    Serial.print(cDEC);
       
    Serial.println();
         
      
    digitalWrite(13HIGH);   // set the LED on
      
    delay(1000);              // wait for a second
      
    digitalWrite(13LOW);    // set the LED off
      
    delay(1000);  
    }


    int readdata()
    {
      
    byte x=0;
      do
       {
        if (
    Serial.available()> 0)
         {
          
    delay (100);
          
    xSerial.read();
         }
       }while(
    x==0);
       
    return 
    x;

    Пробовал через массив char, примерно так,
    PHP код:
    int readdata()
    {
    char="{aaaaa}";
    int i=0
      do
      {
        while(
    Serial.available())
         {
          
    a[i] = Serial.read();
          
    i++;
         }
      }while(
    a[i] != '\0'); //Выполнять, пока не попадется ENTER
        //}while(atoi(a)== 0); //Так тоже пробовал :(
    //a[i] = '\0';
    Serial.print("Prinyato");
    Serial.println(atoi(a),DEC); //переводим char в int и печатаем для теста
    return atoi(a); // Возвращаем значение функции, переводим char в int

    но он ловит один символ, а потом остальные, и вообще не пойми как работает. Хотя у меня на него были большие надежды ))
    Последний раз редактировалось Mosh; 20.03.2012 в 02:32.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •