Как проверить работоспособность контроллера
- Войдите на сайт для отправки комментариев
Вс, 21/06/2015 - 21:26
Доброго времени суток всем!
Небольшая предыстория: сравнительно недавно начал заниматься ардуиной, заказал Uno и Nano.
На Uno поморгал свтеодиодом, померял температуру с помощью DS18B20 и порадовался... Затем решил эти задачи переложить на Nano. Но не тут-то было. Nano вообще не воспринимает приходящие данные от датчиков, показывает все время 0. Подумал, что в схеме накосячил, но она даже светодиодом не моргает (ну только 13-м). Код без проблем заливается и пашет. Есть подозрение, что у контроллера просто не работают входа-выхода, но как проверить не знаю, т.к. далек от амперно-паяльных дел.
Буду рад помощи.
Доброго времени суток всем!
Небольшая предыстория: сравнительно недавно начал заниматься ардуиной, заказал Uno и Nano.
На Uno поморгал свтеодиодом, померял температуру с помощью DS18B20 и порадовался... Затем решил эти задачи переложить на Nano. Но не тут-то было. Nano вообще не воспринимает приходящие данные от датчиков, показывает все время 0. Подумал, что в схеме накосячил, но она даже светодиодом не моргает (ну только 13-м). Код без проблем заливается и пашет. Есть подозрение, что у контроллера просто не работают входа-выхода, но как проверить не знаю, т.к. далек от амперно-паяльных дел.
Буду рад помощи.
ну, считай, что ты уже проверил Нану - она не работает. :D
Понятно :( Спасибо
Понятно :( Спасибо
да, нет - спасибом не отделаешься, рассказывай, как ушатал Нану.
Пришел мне еще помимо этого шилд Funduino, я Нану на него положил как надо (т.е. правильно), подал питание 12В 1А - загорелись индикаторы и потухли почти сразу. Дал питание по USB на Нану - инидкаторы горят и моргают. Притом, с того же БП я давал питание на Уну - все ОК. Может это ее пришибло, что теперь Нана в ауте, а может она и пришла мне уже такая.
В порту сначало нули потом единицы.
Смотри потом контакты.
Нано +12 на какой контакт садил.???
В порту сначало нули потом единицы.
Смотри потом контакты.
Нано +12 на какой контакт садил.???
Выводит:
Контакты каким образом "смотреть" ?
12В садил в черный круглый разъем для питания:
Контакты каким образом "смотреть" ?
программно digitalRead(n); , где - n = номер пина.
аппаратно - диод подключи.
*предварительно пины сконфигурируй как выходы - pinMode(n, OUTPUT); может, забыл, что нужно?
Вроде рабочая
Проверить распиновку, может нано и ваш шилд отличаются.
12 Вольт ? Стабилизатор не греется? 9-ти Вольт нет под рукой?
Диод с резистором.
Или "пожертвовать" одним выходом и сделать его входом- тогда в сериал монитор его отправлять.
А из выходов "моргалку" устроить.
И перемычкой по выходам пройтись.........
Главное на 12-ти Вольтовый не попасть!
Позвонить см на ногу нано , она чётко должна звониться с синим контактом на твоём шилде, тоесть проверить совпадение номером на шилде (это китай всё возможно).
Ответы (частично):
Распиновка шилда соответствует ногам Nano
Ничего не греется, не воняет, не дымит.
Звонить, к сожалению, нечем :(
Эксперименты:
Без шилда назначил цифровые выходы с 2 по 13. Моргал раз в секунду всеми выходами поочердено "подпихивая" диод - все моргается с одним "НО": 2-12 и 13 живут по-разному. Т.е. когда "говоришь" 13-му и 12-му HIGH, то 13 горит, а 12 - нет и обратная ситуация при LOW. А так, даже смог температуру с DS18B20 снять пару раз ... Ибо очень плохой контакт у меня тут.
Так же назначил выхода с 2 по 12 и получал положительный исход при замыкании контакта.
Надел Arduino на шилд через ноги, которые шли в комплекте с Nano, подал питание через БП на шилд (4.5В, 6В, 7.5В, 9В, 12В) - ничего; и шилд и Nano не получают питания. Убрал внешнее питание и дал по USB питание на Nano (она его получила и весело заморгала) и тут я случайно двинул ардуину так, что на шилде загорелся индикатор питания... Получается, шилд получил питание через контроллер ... Странно, но тем не менее я попробовал пару выходов шилда на предмет моргания светодиодом - не получилось, не моргает.
не, ну это уже не серьёзно - у вас там пространственно-временная аномалия и дуино полюбому будет выведена из строя.
Всем спасибо. Проблема была именно в плохом контакте ног и контроллера. После паспайки ног на плате все заработало как часы. И шилд пашет.
Да это легко, сто лет прошло.
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
int val = 0;
word alk = 0;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(9, OUTPUT);
// pinMode(D2, INPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
Serial.begin(1000000); // Инициализация последовательного порта
}
// the loop function runs over and over again forever
void loop() {
word pot0 = analogRead(A0); // Чтение из A5
Serial.print("A0- ");
if (pot0<1000) Serial.print(" ");
if (pot0<100) Serial.print(" ");
if (pot0<10) Serial.print(" ");
Serial.print(pot0); // вывод в Serial монитор значения с потенциометра
word pot1 = analogRead(A1); // Чтение из A5
Serial.print(" A1- ");
if (pot1<1000) Serial.print(" ");
if (pot1<100) Serial.print(" ");
if (pot1<10) Serial.print(" ");
Serial.print(pot1);
word pot2 = analogRead(A2); // Чтение из A5
Serial.print(" A2- ");
if (pot2<1000) Serial.print(" ");
if (pot2<100) Serial.print(" ");
if (pot2<10) Serial.print(" ");
Serial.print(pot2);
word pot3 = analogRead(A3); // Чтение из A5
Serial.print(" A3- ");
if (pot3<1000) Serial.print(" ");
delay(1);
if (pot3<100) Serial.print(" ");
if (pot3<10) Serial.print(" ");
Serial.print(pot3);
word pot4 = analogRead(A4); // Чтение из A5
Serial.print(" A4- ");
if (pot4<1000) Serial.print(" ");
if (pot4<100) Serial.print(" ");
if (pot4<10) Serial.print(" ");
Serial.print(pot4);
word pot5 = analogRead(A5); // Чтение из A5
Serial.print(" A5- ");
if (pot5<1000) Serial.print(" ");
if (pot5<100) Serial.print(" ");
if (pot5<10) Serial.print(" ");
Serial.print(pot5);
word pot6 = analogRead(A6); // Чтение из A5
Serial.print(" A6- ");
if (pot6<1000) Serial.print(" ");
if (pot6<100) Serial.print(" ");
if (pot6<10) Serial.print(" ");
Serial.print(pot6);
word pot7 = analogRead(A7); // Чтение из A5
Serial.print(" A7- ");
if (pot7<1000) Serial.print(" ");
if (pot7<100) Serial.print(" ");
if (pot7<10) Serial.print(" ");
Serial.print(pot7);
word pot8 = digitalRead(0); // Чтение из A5
Serial.print(" D0-");
Serial.print(pot8);
word pot9 = digitalRead(1); // Чтение из A5
Serial.print(" D1-");
Serial.print(pot9);
word pot10 = digitalRead(2); // Чтение из A5
Serial.print(" D2-");
Serial.print(pot10);
word pot11 = digitalRead(3); // Чтение из A5
Serial.print(" D3-");
Serial.print(pot11);
word pot12 = digitalRead(4); // Чтение из A5
Serial.print(" D4-");
Serial.print(pot12);
word pot13 = digitalRead(5); // Чтение из A5
Serial.print(" D5-");
Serial.print(pot13);
word pot14 = digitalRead(6); // Чтение из A5
Serial.print(" D6-");
Serial.print(pot14);
word pot15 = digitalRead(7); // Чтение из A5
Serial.print(" D7-");
Serial.print(pot15);
word pot16 = digitalRead(8); // Чтение из A5
Serial.print(" D8-");
Serial.print(pot16);
word pot17 = digitalRead(9); // Чтение из A5
Serial.print(" D9-");
Serial.print(pot17);
word pot18 = digitalRead(10); // Чтение из A5
Serial.print(" D10-");
Serial.print(pot18);
word pot19 = digitalRead(11); // Чтение из A5
Serial.print(" D11-");
Serial.print(pot19);
digitalWrite(12,1);
digitalWrite(2,1);
word pot20 = digitalRead(12); // Чтение из A5
Serial.print(" D12-");
Serial.print(pot20);
word pot21 = digitalRead(13); // Чтение из A5
Serial.print(" D13-");
Serial.print(pot21);
Serial.println();
if (alk > 100) analogWrite(A0,255); // Для заряда - разряда полярного конденсатора на 1000 uF}
if (alk > 150) {alk = 0;
analogWrite(A0,0);}
alk = alk + 1;
delay(10); // пауза
// PORTB = B00100000;
// PORTB = B00000000;
// PORTB = B00100000;
// PORTB = B00000000;
// PORTB = B00100000;
// PORTB = B00000000;
// PORTB = B00100000;
// PORTB = B00000000;
// digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
// delay(1000); // wait for a second
// digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
// delay(1000); // wait for a second
}