Передача информации через библиотеку VirtualWire

Kostya
Offline
Зарегистрирован: 30.11.2016

Мне нужно передавать информацию с двух потенциометров (в данном случае у меня джойстик), с помощью каких команд можно передать значения этих двух потенциометров используя библеотеку VirtualWire? 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А с помощью каких Вы пробовали и что именно у Вас не получилось?

Kostya
Offline
Зарегистрирован: 30.11.2016

никак не пробывал, искал в интернете как отправлять, нашел только отправку значение одного потенциометра, но мне то надо 2, в написании прошивок не силен, всё делаю по ходу через статьи в интернете 

всё что нарыл:

#include <VirtualWire.h>

void setup() 
{ 
    // Запуск передатчика
    vw_set_ptt_inverted(true);
    vw_setup(1000); // Bits per sec 
}

void loop() 
{
    // чтение показаний с переменного резистора
    int sensorValue = analogRead(A0);

    // отправляем значение
    send(sensorValue); 
}

void send(int param) 
{ 
    // конвертируем int в массив из 2 байт
    uint8_t msg[2];
    int len = 2;
    msg[0] = highByte(param);
    msg[1] = lowByte(param);

    // отправляем непосредственно в радиоканал
    vw_send(msg, len);
    // ждем пока сообщение не уйдет целиком
    vw_wait_tx(); 
 
xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

В интернете еще нет кодо по отправки с двух пАЦАнтиометров, придется писать самому.

Заадно выложитеее его в интернет, что бы ваш ребенек его сразу нашОл.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Kostya пишет:

нашел только отправку значение одного потенциометра, но мне то надо 2, 

Древний анекдот: в купе едут русский чукча и армянин. Армянин предлагает чукче поиграть в загадки по трёшке, то соглашается и армянин начинает:

- Что такое «малэнкий, краснэнкий, круглэнкий?»
- Красный чум, однако?
- Нэт! Памыдор!

Чукча отдал три рубля, а армянин задаёт вторую загадку:

- Что такое «два малэнкий, краснэнкий, круглэнкий?»
- Два красных  чума, однако?
- Нэт! Два памыдора!

Тут русский задремал, а когда проснулся, увидел сдиящего перед горой денег армянина, устало говорящего: «Трыста пятьдесят адын малэнкий, краснэнкий, круглэнкий?»

Вот так и про Ваши потенциометры.

Помочь, к сожалению, ничем не могу, т.к. тоже не видел в Интернете скетча на два потенциометра. На один видел, на три и на четыре – видел, а на два … ничем не могу помочь :(

Kostya
Offline
Зарегистрирован: 30.11.2016

 У меня есть переменная которая будет принимать значения 1 2 3 и 4, могу ли я передовать эти значения через VirtualWire и как?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

переменная не может принимать значение 1 2 3 и 4.

может только 1 2 3 или 4. 

передавать можете.

    // отправляем значение
    send(sensorValue);

стеб не прекратится, пока вы внятно не скажите чего вы хотите и приведете полный код того что вы уже попробывали

а не из интернета, завязывайте с теорией.

 

 
Kostya
Offline
Зарегистрирован: 30.11.2016

за подсказку спасибо, код скину когда всё доделаю на практике

mag155
Offline
Зарегистрирован: 21.12.2017

Всем привет. Как пачку данных в виде 4 типов цыфр разбить каждую в свою переменную ???

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

mag155 пишет:

Всем привет. Как пачку данных в виде 4 типов цыфр разбить каждую в свою переменную ???

Привет. Чтобы что-нибудь разбить, нужно просто иметь достаточно большой молоток.

mag155
Offline
Зарегистрирован: 21.12.2017

ХА ХА ХА !!!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это Вы над своим постом #8? Правильно!

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

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mag155 пишет:

ХА ХА ХА !!!

хорош срать в каждой теме, тут тебя спрашивал

http://arduino.ru/forum/programmirovanie/upravlenie-yarkostyu-svetodioda-po-bluetooth#comment-362378

нахрен сегодня тут флудишь ?

mag155
Offline
Зарегистрирован: 21.12.2017

В монитор порта сверху вниз приходят цифры. Первая это реверса если стоим она 243 вперед 241 назад 242. Вторая это газ она меняется от 0 до 255. Третья это поворот колеса прямо это 88 в право от 88 до 120, в лево от 88 до 44. Потом цифра фары 112 вкл 0 Выкл.Они передаются циклично сверху в низ по очереди. Каким образом их можно разбить каждую в свою переменную чтоб работать с каждой из них отдельно.?

mag155
Offline
Зарегистрирован: 21.12.2017

Вот такой написал код просьба громко не улыбатся сортировать по массивам получается но вместе с нужными данными еще -1 все время влазит ?

void loop()
{

if (Serial.available()>0){

for (int i = 0;i< 5; i++){
hmal[i] = Serial.read();
Serial.println(hmal[1]);

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В четвёртой строке Вы проверяете, что пришло сколько-то (>0) байтов.

А в строках 6-10 читайте 5 байтов. Кто Вам сказал, что пришло именно 5, а не всего один или два? С какого перепугу Вы читаете именно пять? Даже если Вы точно знаете, что отправляется пять, к моменту чтения они могли ещё не все прийти.

Либо проверяйте что пришло >=5, либо проверяте на >0, но тогда перед каждой операцией чтения.

mag155
Offline
Зарегистрирован: 21.12.2017

В 4 строке это я проверяю пришло ли вобще хоть что то . Поправте если я ошибаюсь? А именно пять потому что 5 типов цифр приходит 

1 тип реверс.

2 газ.

3 серва.

 

4 фары.

5 стопы .даже их там шесть.

6 сигнал. и все они в виде цифр от 0 до 255.

mag155
Offline
Зарегистрирован: 21.12.2017
void loop()
{

if (Serial.available()>=10){

for (int i = 0;i< 10; i++){
hmal[i] = Serial.read();


Serial.println(hmal[1]);

Если вот так то все работает но нужное число выводится 10 раз потом 10 раз ноль потом опять нужное число тоесть пока условия верно это нужное число потом условия не верно и от кудато беретса именно 10 нолей ??

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Всё, что нужно, я Вам написал. Думайте, делайте.

mag155
Offline
Зарегистрирован: 21.12.2017

Спасибо !!!!

mag155
Offline
Зарегистрирован: 21.12.2017
if (Serial.available()>=20){

for (int i = 0;i< 20; i++){
hmal[i] = Serial.read();


Serial.println(hmal[1]);

Вот так работает  Получается количество бай было больше чем 5 в первом случае ?? 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не знаю. Я бы по одному читал. И заодно проверял бы на "левые" байты. Если отправкой занимает не программа, а человек, запросто могут затесаться пробелы, переводы строк и т.п. Ну, а если программа, то там всё проще.

mag155
Offline
Зарегистрирован: 21.12.2017

Смысл оказался втом что передается 12 бат. Тоесть 4 строки по 3 байта каждая. Но хочу понять второй ваш вариант читать по одной строке. Напишите примерчик просто одну строку для чтения и проверки если не сложно ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Про парсинг я сейчас ничего писать не буду, см. #2

mag155
Offline
Зарегистрирован: 21.12.2017

???

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Что "???" ? По ссылке что-то непонятно? Ну, ладно, мы многое в жизни не понимаем.