CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Прямой эфир


0
Здравствуйте! может кто поможет лузеру? что не так и как чтобы так?

// термометр, датчик DS18B20
#include <MsTimer2.h>
#include <Led4Digits.h>
#include <OneWire.h>
#include <MirmPS.h>
#include <Adafruit_BMP085.h>     //Библиотека для датчика давления

Adafruit_BMP085 press_data;     //переменная для работы с датчиком

byte mA = 3;

int tmp;

float Pmm;     //для хранения показаний давления

float Tc;        //для хранения температуры

#define POWER_MODE  0 // режим питания, 0 - внешнее, 1 - паразитное
#define MEASURE_PERIOD 500  // время измерения, * 2 мс

// тип индикатора 1; выводы разрядов 5,4,16,2; выводы сегментов 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,16,2, 6,7,8,9,10,11,12,13);

OneWire sensDs (15);  // датчик подключен к выводу 15

int timeCount;     // счетчик времени измерения
boolean flagSensReady;  // признак готовности данных с датчика
byte bufData[9];  // буфер данных
float temperature;  // измеренная температура

void setup() {
  pinMode(mA, OUTPUT);  
   press_data.begin(); 
    press_data.begin();     //подключаемся к датчику  
  MsTimer2::set(2, timerInterrupt); // задаем период прерывания по таймеру 2 мс 
  MsTimer2::start();               // разрешаем прерывание по таймеру
  Serial.begin(9600);
  TIMSK2=1;
 
  
}


void loop1()

{

  Tc=press_data.readTemperature();      //читаем температуру

  Pmm=press_data.readPressure()/133.322;      //читаем и пересчитываем давление

  
  
   Pmm=map(Pmm, 700, 800, 0, 255);

  analogWrite(mA, Pmm);

delay(100);

}
float j=0;float i=0;
void loop2() { 

  if ( flagSensReady == true ) {
    flagSensReady= false;
    // данные готовы

   if ( OneWire::crc8(bufData, 8) == bufData[8] ) {  // проверка CRC
      // данные правильные
      temperature=  (float)((int)bufData[0] | (((int)bufData[1]) << 8)) * 0.0625 + 0.03125; 
  
      // вывод измеренной температуры на индикаторы
      if (temperature >= 0) {
        // температура положительная
        disp.print((int)(temperature * 10.), 4, 1);         
      }
      else {
        // температура отрицательная
        disp.print((int)(temperature * -1 * 10.), 3, 1);         
        disp.digit[3]= 0x40;  // отображается минус
      }
      disp.digit[1] |= 0x80;  // зажечь точку второго разряда                 
        
      // передача температуры на компьютер
      Serial.println(temperature);    
    }
    else {  
      // ошибка CRC, отображается ----
        disp.digit[0]= 0x40; 
        disp.digit[1]= 0x40; 
        disp.digit[2]= 0x40; 
        disp.digit[3]= 0x40;         
    }    
 
  } 
  
}


//-------------------------------------- обработчик прерывания 2 мс
void  timerInterrupt() {
  disp.regen(); // регенерация индикатора

  // управление датчиком DS18B20 паралллельным процессом
  timeCount++; if ( timeCount >= MEASURE_PERIOD ) { timeCount=0; flagSensReady=true; } 
  
  if (timeCount == 0) sensDs.reset();  // сброс шины   
  if (timeCount == 1) sensDs.write(0xCC, POWER_MODE); // пропуск ROM
  if (timeCount == 2) sensDs.write(0x44, POWER_MODE); // инициализация измерения

  if (timeCount == 480) sensDs.reset();  // сброс шины
  if (timeCount == 481) sensDs.write(0xCC, POWER_MODE); // пропуск ROM  
  if (timeCount == 482) sensDs.write(0xBE, POWER_MODE); // команда чтения памяти датчика  
    
 if (timeCount >= 483 && timeCount <= 491) bufData[timeCount - 483 ] = sensDs.read(); 
}
avatar

RF68

  • 16 октября 2017, 20:00
0
Попробуйте переместить директорию скетча в корневой каталог (чтобы в пути не было символов отличных от английских).
avatar

admin

  • 12 октября 2017, 12:09
0
если интересно могу выложить свой код для ардуины, и код для esp8266 для управления удаленно по телнету\putty
avatar

Guron

  • 11 октября 2017, 07:35
0
Спасибо сделал почти по вашему примеру.
Дополняю документацией irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf
и на моей iroomba 650 сразу правильно работает на 115200,
avatar

Guron

  • 11 октября 2017, 07:22
0
Здравствуйте, у меня возникла проблема с кодом который вы написали. Я пытался также написать код для робота управляемым нейронной сетью и наткнулся на эту статью. Arduino IDE выдаёт следующую ошибку:

Arduino: 1.8.3 (Windows 7), Плата:«Arduino/Genuino Uno»

Neironnai_set:8: error: 'Random_run' does not name a type

Neironnai_set:10: error: expected unqualified-id before '[' token

Neironnai_set:11: error: expected unqualified-id before '[' token

Neironnai_set:13: error: expected unqualified-id before '[' token

Neironnai_set:14: error: expected unqualified-id before '[' token

Neironnai_set:16: error: expected unqualified-id before '[' token

Neironnai_set:17: error: expected unqualified-id before '[' token

Neironnai_set:22: error: 'List' does not name a type

Neironnai_set:24: error: 'List' does not name a type

Neironnai_set:43: error: expected ',' or '...' before 'vector'

Neironnai_set:67: error: expected ',' or '...' before 'vector'

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: In function 'void init_net()':

Neironnai_set:31: error: 'INPUT_W' was not declared in this scope

Neironnai_set:31: error: 'run' was not declared in this scope

Neironnai_set:36: error: 'OUTPUT_W' was not declared in this scope

Neironnai_set:36: error: 'run' was not declared in this scope

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: At global scope:

Neironnai_set:43: error: expected ',' or '...' before 'vector'

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: In function 'void DirectMotion(float*)':

Neironnai_set:45: error: 'vector' was not declared in this scope

Neironnai_set:49: error: 'INPUT_RESULT' was not declared in this scope

Neironnai_set:51: error: 'INPUT_W' was not declared in this scope

Neironnai_set:51: error: 'vector' was not declared in this scope

Neironnai_set:58: error: 'OUTPUT_RESULT' was not declared in this scope

Neironnai_set:60: error: 'OUTPUT_W' was not declared in this scope

Neironnai_set:60: error: 'INPUT_RESULT' was not declared in this scope

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: At global scope:

Neironnai_set:67: error: expected ',' or '...' before 'vector'

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: In function 'float BackPropagation(float*)':

Neironnai_set:70: error: 'vector' was not declared in this scope

Neironnai_set:77: error: 'OUTPUT_ERROR' was not declared in this scope

Neironnai_set:79: error: 'target' was not declared in this scope

Neironnai_set:79: error: 'OUTPUT_RESULT' was not declared in this scope

Neironnai_set:82: error: 'INPUT_ERROR' was not declared in this scope

Neironnai_set:85: error: 'OUTPUT_ERROR' was not declared in this scope

Neironnai_set:85: error: 'OUTPUT_W' was not declared in this scope

Neironnai_set:96: error: 'INPUT_W' was not declared in this scope

Neironnai_set:96: error: 'INPUT_ERROR' was not declared in this scope

Neironnai_set:102: error: 'OUTPUT_W' was not declared in this scope

Neironnai_set:102: error: 'OUTPUT_ERROR' was not declared in this scope

Neironnai_set:102: error: 'INPUT_RESULT' was not declared in this scope

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: In function 'float calculate_global_error()':

Neironnai_set:114: error: 'OUTPUT_ERROR' was not declared in this scope

Neironnai_set:115: error: 'Math' was not declared in this scope

C:\Users\Р? ван Robotics\Desktop\РўРёРїР° нейронная сеть\Neironnai_set\Neironnai_set.ino: In function 'void Learn()':

Neironnai_set:126: error: 'Input_patern' was not declared in this scope

Neironnai_set:127: error: 'Out_patern' was not declared in this scope

Neironnai_set:129: error: 'Console' was not declared in this scope

exit status 1
'Random_run' does not name a type

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»

Пожалуйста, помогите мне с ней. Может надо установить дополнительную библиотеку.
avatar

Ivan_robotics

  • 10 октября 2017, 21:28
0
Как скачать материалы по программатору, очень хочу собрать.
avatar

Chepaev

  • 8 сентября 2017, 07:13
0
Здравствуйте! Я новичок в этом деле. Мне нужна помощь с моим проектом, за деньги разумеется. Есть на просторах интернета статья(https://opencv-srf.blogspot.ru/2010/09/object-detection-using-color-seperation.html?showComment=1503168085976#c1626075366995164909) «Color Detection & Object Tracking». Мне очень подходит данный код, НО… требуется сделать некоторые изменения: 1)Вместо прочерчивания линии за объектом, требуется захватить его в окружность(прямоугольник); 2) Необходимо добавить код, который мог бы объект удерживать всегда в центре при помощи 2 сервоприводов и Arduino. Моя почта: khiggs2013@gmail.com
avatar

Opencv

  • 19 августа 2017, 22:02
0
Здравствуйте. Решил переделать эту библиотеку под atmega2560. Поменял адрес первого стека на 0x21ff(RAMEND) согласно m2560def.inc, второго на 0x20a1, в обработчике прерывания поставил границу 0x20ff, а в файле MirmsPS_as.S регистровую пару y на 0x2200. Но на ардуино не работает ни один ни другой поток. При этом если закоментировать включение таймера в setupе, то выполняется первый поток. Может быть кто-нибудь знает в чём дело? Буду рад любой помощи!
avatar

Leopold

  • 13 августа 2017, 01:31
0
Evsurf, спасибо за отзыв! Суть в том, что мы можем получать стереокартинку с одной камеры (то есть да, одна камера с системой зеркал). Нет необходимости синхронизировать потоки или покупать дорогие девайсы. На выходе получается карта глубин, которую уже можно дальше переводить в 3d модель или в облако точек, например. Кстати, на 3dberry.org есть видео работы самого девайса и скрипты для работы.
avatar

MaximMalyy

  • 2 августа 2017, 10:34
0
Максим, интересно.
В комментариях могу покритиковать/предложить
1. Я так и не понял суть устройства, возможно фотографии могли бы пролить свет
Одна камера с системой зеркал? Почему не две камеры?
2. Что система выдает на выходе?
Замудреную картинку или же 3D модель в неком формате?
avatar

Evsurf

  • 2 августа 2017, 09:24
0
Ага, пока ждал ответа сам разобрался, а выглядеть будет примерно так:
(код под OpenCVSharp — C# реализацию...)
Mat[] mats = new Mat[3]{h_plane, s_plane, v_plane};
Cv2.Split(hsvMat, out mats);

Теперь встал вопрос в другом…
При попытке сохранения, или вывода окна с h_plane, s_plane, v_plane программа вываливается с ошибкой:
Source image must have 1, 3 or 4 channels
То-есть, изображение должно иметь 1, 3, или 4 канала.
Проверяю свойство h_plane.Channels(), получаю кол-во каналов = 2
Как то я запутался, а что делать что-бы получить 1 канал, почему Split возвращает изображение с 2 каналами?
avatar

devpilgrim

  • 30 июля 2017, 14:33
0
Здравствуйте. Понимаю что тема старая, но…
В общем в последней версии OpenCV я не нашел метода: cvCvtPixToPlane
Подскажите если не трудно, чем его можно заменить, нужна реализация вашего:
cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 );
avatar

devpilgrim

  • 30 июля 2017, 10:34
0
Не понимаю пока как они изменяют направление, но очевидно, что за такой, с виду простой, идеей скрыто гениальное изобретение!
Возможность поставлять воду/воздух/еду через проложенный трубопровод для помощи погребенных под завалами может спасти много жизней.
avatar

realist

  • 26 июля 2017, 18:21
0
Как передавать данные понял…
Но вот каскад категорически не хочет работать… подсоединил, как везде в инете показывается и как написано в последних строках этой статьи: «С каскадным подключением история такая же, как и с 74HC595, только здесь вывод QH второго регистра подключается к выводу SER первого и т.п.»… но данные не поступают со второго регистра…
Что-то нужно, я так понимаю изменить в коде… Но что?
avatar

conysSM

  • 25 июля 2017, 17:44
0
Здравствуйте!
не знаю отзовётесь ли вы… Встал вопрос о подсоединении каскадом, не могу найти как программу написать… и ещё нужно чтоб каждая кнопка отзывалась светодиодом… Как совместить входящий тригер с выходящим? Как передавать данные?
avatar

conysSM

  • 25 июля 2017, 12:22
0
Искал перевод этой книги около месяца, нашел здесь. Пусть с опозданием, но спасибо огромное.
avatar

devpilgrim

  • 24 июля 2017, 22:35
0
Можно, написано же что хоть 10 подключай :)
avatar

boris_s

  • 23 июля 2017, 19:44
0
Подскажите можно ли подключить каскадом 8 таких регистров?
avatar

boris_s

  • 20 июля 2017, 14:30