Официальный сайт компании Arduino по адресу arduino.cc
Проблема с типами данных
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 11/06/2013 - 15:32
Всем привет!Имеется лампа, яркостью которой необходимо управлять дистанционно с помощью беспроводных модулей Xbee и arduino. Один модуль и ардуино подключены к лампе другой соединен с компьютером. Сигнал идет и лампа горит, но не так хочется. В общем проблема с типами данных. Яркость задаю через протокол UART( tx rx), уровень яркости задаю в компьютере. Введенные мной значения ардуино понимает как char, которые потом преобразуются в dec. В итоге максимум яркости лампы я получаю введя "с", а минимум при "!", а потушить лампу вообще не получается.
Код программы:
void setup() { pinMode(9,OUTPUT); Serial.begin(9600); Serial1.begin(9600); } void loop() { if (Serial1.available()) { char incoming=Serial1.read(); Serial.println(incoming); } if (Serial.available()) { int i=Serial.read(); i=int(i); Serial1.println(Serial.read()); i=map(i,0,99,0,255); analogWrite(9,i); Serial.println(i); delay(500); } }
а вы как ей 0 передаете:
вот так правильней:
0- выкл 9 - макс яркость
http://arduino.ru/forum/programmirovanie/ne-mogu-razobratsya-s-xbee
http://arduino.ru/forum/programmirovanie/perevod-prinyatogo-simvola-s-com-porta-v-chislo
http://arduino.ru/forum/programmirovanie/upravlenie-arduinoi-iz-terinala
http://arduino.ru/forum/programmirovanie/upravlenie-pwm-s-pk
http://arduino.ru/forum/programmirovanie/peredacha-pary-dannykh-cherez-xbee-i-sobstvenno-sbor-obratno
Geronimo, спасибо! все работает)и вентилятором поуправляла)
maksim, спасибо за полезные ссылки, обязательно все прочту.
Здравствуйте!
Возникла еще одна проблема,но на этот раз с данными с датчика температуры(LM335Z). Имеются все также один ардуино и два беспроводных модуля. В программе использовала специальную библиотеку LM335A, чтобы без проблем получать данные с датчика и проводно без модулей значения выходят верные. А беспроводно значения выходят большими, т.е. если температура в комнате 23 градуса, то с модулями уже 146 градусов и далее все растет.
А как все подключено?
Датчик на 0-вом пине, Serial - через юсб к монитору, Serial1 к xbee?
Да датчик на 0-пине, один модуль xbee подключен через usb к монитору,а другой с ардуино и датчиком.
Датчик к аналоговому выводу подключен?
тогда зачем ардуино с датчиком, что-то пишет и читает в сериал?
мб. оставить только
а на втором ардуино:
void loop()
{
if(Serial1.available())
{
Serial.print(Setial1.read());
}
}
Но я использую один ардуино.
maksim, Да датчик к аналоговому выводу подключен.
Когда подключаете через хВее дуину с датчиком от чего питаете?
а скем он беспроводно связывается? с хбии через переходник на комп?
тогда второй кусок кода не нужен
питается от батарейки
от какой батарейки? куда батарейка подключена и куда подключего питание датчика?
И кстати, а как у вас датчик подключен к дуине?
9-вольтовая батарея подключена к ардуино. У нас имеется стендд-коробка по управлению температурой, внутри датчик тем-ры, лампа для нагрева и вентилятор для охлаждения, вот у этой коробки свое питание, к ардуино подключены один провод земля от коробки и другой к аналоговому входу от датчика
я удалила лишнее все оставила толька данный код,и всеравно данные идут от 150 и увеличиваются,когда на самом деле температура составляет 23 градуса.
По описанию схемы "стендд-коробка" не ясно как у вас подключен датчик, поэтому помочь ничем не могу.
Стенд - коробка выглядит таким образом:
К сожалению по этим фото не видно как подключен датчик. Нужна схема. В общем в чем заключаются мои предположения. Вы когда питаете дуину от УСБ на схеме датчика 5 вольт, а когда от батареи либо на схеме датчика напряжение батареи, либо наоборот падение напряжения ниже 5 вольт.
Я - новичок,можете подробнее написать,что Вы имели ввиду??
maksim, Вы были правы. Проблема была в питании, мы подключили ардуино к другому компьютеру и данные пошли верные. Спасибо!)