Примеры в учебнике
- Войдите на сайт для отправки комментариев
Чт, 14/02/2013 - 09:48
В учебнике есть пример для создания своей функции.
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" Спасибо
Надо полагать от того, что 5 строка должна выглядеть так:
void loop(){Так это что, специально сразу и на ошибки примеры? Все-таки учебник..
Я поправил Вашу тему, но пожалуйста ознакомтесь как всавлять код в тему/комментарий
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Вот сколько сообщений у меня, столько и пробую.
Вставляю код иду дополнительно, ставлю галочки "убрать выравниватель,свернуть код", жму ок и ничего не происходит.Вот сейчас, открыл дополнительную вкладку на вашу ссылку и попробовал, жму на ок и тишина.
По примеру из учебника составил скетч, но в фукцию, похоже не передается параметр. посмотрите, пожалуйста.может чего не понял.
#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
}
---
Спасибо
Интересная функция получается.
На входе ожидает получить int x, который потом чудесным образом преобразуется аж в "х" (так, естественно, работать не будет).
почитайте про типы данных и их преобразования.
Интересная функция получается.
На входе ожидает получить int x, который потом чудесным образом преобразуется аж в "х" (так, естественно, работать не будет).
почитайте про типы данных и их преобразования.
ничего не понял.Мне недо передать значение x в передатчик. Передатчик работает, но передает не то, что надо. Если без функции,то все работает нормально
Вы в функцию передаете целое (int), а дальше в функции уже хотите работать со строкой.
Поэтому и не работает. Данные разных типов и их нужно преобразовывать сначала.
Есть скетч:
#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); } }Судя по повторяющися частям кода, можно ли оформить функцию и примерно как.