Примеры в учебнике

Danila52
Offline
Зарегистрирован: 13.12.2012

В учебнике есть пример для создания своей функции.

 void setup(){
Serial.begin(9600); 
}

void loop{ 
int i = 2; 
int j = 3;
 int k;

k = myMultiplyFunction(i, j); // k содержит 6 
Serial.println(k); 
delay(500); 
}

int myMultiplyFunction(int x, int y){ 
int result; 
result = x * y; 
return result; } 
------------------------------------------------ 

запускаю и сразу ошибка. Проверяю blink-ом Все нормально. Откуда ошибка в 5 строке "funktion definition does not declare parameters" Спасибо

alexxkr
Offline
Зарегистрирован: 30.12.2012

Надо полагать от того, что 5 строка должна выглядеть так:

void loop(){

 

Danila52
Offline
Зарегистрирован: 13.12.2012

Так это что, специально сразу и на ошибки примеры? Все-таки учебник..

Alexander
Offline
Зарегистрирован: 25.04.2010

Я поправил Вашу тему, но пожалуйста ознакомтесь как всавлять код в тему/комментарий

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

 

 

Danila52
Offline
Зарегистрирован: 13.12.2012

Вот сколько сообщений у меня, столько и пробую.
Вставляю код иду дополнительно, ставлю галочки "убрать выравниватель,свернуть код", жму ок и ничего не происходит.Вот сейчас, открыл дополнительную вкладку на вашу ссылку и попробовал, жму на ок и тишина.
По примеру из учебника составил скетч, но в фукцию, похоже не передается параметр. посмотрите, пожалуйста.может чего не понял.

#include

int RF_TX_PIN = 9;

void setup()
{
Serial.begin(9600);// Debugging only
Serial.println("setup");
vw_set_ptt_inverted(true); // Required for DR3100
vw_set_tx_pin(RF_TX_PIN); // Setup transmit pin
vw_setup(200); // Transmission speed in bits per second.
}

void loop()
{
int x = 1;
int k;

k = my(x);
// Serial.println(k);
}
int my (int x){
const char *msg = "x";
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
vw_send((uint8_t *)msg, strlen(msg));
digitalWrite(10, true); // Flash a light to show transmitting
int i;
for (i = 0; i < strlen(msg); ++i)
{
Serial.print(msg[i], HEX);
Serial.print(" ");
}
Serial.println("");
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(10, false);
vw_wait_rx_max(400); // Wait at most 400ms for a reply
}
---
Спасибо

ustas
Offline
Зарегистрирован: 12.03.2012

Интересная функция получается.

На входе ожидает получить int x, который потом чудесным образом преобразуется аж в "х" (так, естественно, работать не будет).

почитайте про типы данных и их преобразования.

Danila52
Offline
Зарегистрирован: 13.12.2012

ustas пишет:

Интересная функция получается.

На входе ожидает получить int x, который потом чудесным образом преобразуется аж в "х" (так, естественно, работать не будет).

почитайте про типы данных и их преобразования.

ничего не понял.Мне недо передать значение x в передатчик. Передатчик работает, но передает не то, что надо. Если без функции,то все работает нормально

 

ustas
Offline
Зарегистрирован: 12.03.2012

Вы в функцию передаете целое (int), а дальше в функции уже хотите работать со строкой. 

Поэтому и не работает. Данные разных типов и их нужно преобразовывать сначала.

Danila52
Offline
Зарегистрирован: 13.12.2012

Есть скетч:

#include <VirtualWire.h>

const int transmit_pin = 9;
const int transmit_en_pin = 10;
int inputPin3 = 3;               // выбор входного пина (для кнопки)
int inputPin4 = 4;               // выбор входного пина (для кнопки)
int inputPin5 = 5;               // выбор входного пина (для кнопки)
int inputPin6 = 6;               // выбор входного пина (для кнопки)
int val = 0;                    // переменная, куда будет считываться
// состояние пина
void setup()
{

  // Initialise the IO and ISR
  vw_set_tx_pin(transmit_pin);
  //vw_set_ptt_pin(transmit_en_pin);
  vw_set_ptt_inverted(true); // Required for DR3100
  vw_setup(200);	 // Bits per sec
}

byte count = 1;

void loop(){
  /*
  Проверяем включение команды 1 (включить первую позицию, 
  если да посылаем на передатчик 1, если нет посылаем 5) 
  */
  val = digitalRead(inputPin3);  // считать значение на входе если на входе HIGH
  if (val == HIGH) 
  {            
    char msg[4] = {'1'}; //
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  } 
  else   {
    char msg[4] = {'5'}; //
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  }
    /*
  Проверяем включение команды 2 (включить вторую позицию, 
  если да посылаем на передатчик 2, если нет посылаем 6 ) 
  */
   val = digitalRead(inputPin4);  // считать значение на входе если на входе HIGH
  if (val == HIGH) 
  {            
    char msg[4] = {'2'};//
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  } 
  else   {
    char msg[4] = {'6'}; //
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  }
    /*
  Проверяем включение команды 3 ( включить третью позицию, 
  если да посылаем на передатчик 3, если нет посылаем 7 ) 
  */
   val = digitalRead(inputPin5);  // считать значение на входе если на входе HIGH
  if (val == HIGH) 
  {            
    char msg[4] = {'3'};
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  } 
  else   {
    char msg[4] = {'7'};
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  }
    /*
  Проверяем включение команды 4 (включить четвертую позицию, 
  если да посылаем на передатчик 4, если нет посылаем 8) 
  */
  val = digitalRead(inputPin6);  // считать значение на входе если на входе HIGH
  if (val == HIGH) 
  {            
    char msg[4] = {'4'};
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  } 
  else   {
    char msg[4] = {'8'}; //
    msg[4] = count;
    vw_send((uint8_t *)msg, 4);
    digitalWrite(transmit_en_pin, HIGH); // Flash a light to show transmitting
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(transmit_en_pin, LOW);
    delay(200);

  }
}






Судя по повторяющися частям кода, можно ли оформить функцию   и примерно как.