Как ее остановить??!!
- Войдите на сайт для отправки комментариев
Чт, 07/03/2013 - 00:03
Боже, кто-то, помогите пожалуйста!
не могу найти как удалить то, что я прописал!
установил программу для виндовса, сделал все что описано в http://arduino.ru/Guide/Windows и теперь она постоянно мигает >_<
где, где найти то что прописано в нутри ее? меня это мигание начинает раздрожать =\\\
пожалуйста, помогите
Кто мигает?
На ардуине есть встроенный светодиод. в обучающей статье описано как заставить его мигать. И после этого я не знаю как остановить это мигание.
у меня нигде не отображается тот код, который я загрузил на ардуину. и не знаю как его удалить, чтобы остановить это мигание
Залейте этот пример
void setup() {} void loop() {}Максим, я бы Вас расцеловал =)
теперь могу пойти спать спокойно. спасибо большое!
этот код обнуляет все что я раньше написал?
хм, через нескольких таких обнулений у меня теперь встроенный зеленый светодиод постоянно горит. так разве должо быть?
Светодид не будет гореть пока вы ему не прикажите. Или пока соблюдается условие.
Скорее всего вы зали что то другое.
Попробуйте такую программу. С ней точно ничего не должно мигать.
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, LOW); }теперь встроенный зеленый светодиод постоянно горит
так это индикатор питания светит
:))) Ардуёнок!?
У меня UNO R3. Там красный - индикатор питания, а зеленый - просто встроенный светодиод. и они оба светились.
спасибо, nestandart, все помогло и теперь ничего лишнего не мигает =)
Но когда прописываю, чтобы шло питание от других выходов и замыкаю их на GND, то опять начинает светится этот зеленый диод (О_о) или так и должно быть?
void setup() { // Инициализируем цифровой вход/выход в режиме выхода. // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате. pinMode(8, OUTPUT); pinMode(9, OUTPUT); } void loop() { digitalWrite(8, HIGH); // зажигаем светодиод delay(500); // ждем пол секунды digitalWrite(8, LOW); // выключаем светодиод delay(50); // ждем чуть-чуть digitalWrite(9, HIGH); // зажигаем светодиод delay(500); // ждем пол секунды digitalWrite(9, LOW); // выключаем светодиод delay(50); // ждем чуть-чуть }тут даже нет этого 13 выхода, а он начинает светится. что не так? или он должен работать, когда идет ток через ардуину куда-то дальше?
Может автор темы скажет какая именно у него плата Arduino? А что бы не раздражало мигание, накройте пока плату чем нибудь непрозрачным. Да и ещё - не надо другие выходы замыкать на GND.
у меня Ардуино UNO R3.
Постараюсь объяснить суть проблемы:
Вчера вечером первый раз подключил ардуину и попробовал сделать как описно в "обучении". Все получилось правильно, и светодиод с выхода №13 начал мигать (который на плате).
Потом я захотел подключить макетную плату: вставил "+" из выхода №12 в макетную плату, потом там из "+" через резистор включил диод, а минус замкнул на GND. и у меня начал мигать диод на макетной плате и диод на ардуине.
Потом я написал сюда эту тему, и обнулил данные как посоветовал Максим. Диоды мигать перестали. Но когда я по новой прописал мигание для выхода №12, то у меня просто стал светится встроенный светодиод (который для обучения).
Пока все это писал, то возник вопрос: может это из-за того, что я минус вывожу в GND? поэтому у меня и светится встроенный диод? и если это делаю не правильно, то куда тогда мне выводить минус с макетной платы?
Заранее благодарен.
может быть проблема в том, что я замыкал на GND который находится возле 13 выхода, а надо было замыкать там, где POWER?
"LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит. "
вот у меня горит вот этот диод, хотя на выход №13 вообще ничего не прописанно. или он вообще постоянно должен гореть?
Отключите ВСЕ провода от макетной платы и снова поуправляйте через скетч "Blink" встроенным на плате светодиодом (D13). Потренеруйтесь управлять длительностью свечения этого светодиода. И лишь затем начинайте, помалу, усложнять задачи.
Встроенным светодиодом мигать научился. т.е. для этого мне вообще не нужны никакие проводки.
Потом у меня возникла проблема как отменить это мигание (так как я полагал, что вся информация, которая в процессоре, будет выводиться куда-то на монитор, и я ее могу удалить просто выделив и нажав "Delete"). Но не тут то было: походу все записывается, а чтобы удалить - надо перезаписать что-то другое. Поэтому создал эту тему.
Когда прописываю код, который отменяет свечение этого диода (который предложил Nestandart), то светиться прекращает.
Но когда я прописываю мигание диода из другого выхода (уже через макетную плату), то опять начинает светится этот встроенный диод.
Может этот светодиод (на ардуине он пронумерован буквой L и находится рядом с RX и TX) должен всегда гореть, когда ардуина работает, и я просто зря паникую?
на этот диод не обращайте внимания
вы же его не используете в своей программе, значит и подключать вывод никуда не будете...
если не хотите чтоб он светил, назначьте его как выход и прижмите его к земле.
void setup() { // Инициализируем цифровой вход/выход в режиме выхода. // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате. pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(13, OUTPUT); digitalWrite(13, LOW); } void loop() { digitalWrite(8, HIGH); // зажигаем светодиод delay(500); // ждем пол секунды // выключаем светодиод delay(50); // ждем чуть-чуть digitalWrite(9, HIGH); // зажигаем светодиод delay(500); // ждем пол секунды digitalWrite(9, LOW); // выключаем светодиод delay(50); // ждем чуть-чуть }как то так, если поправить ваш код
Та не, меня он уже не отвлекает. Просто испугался что что-то делал не так, поэтому он и светился, хотя в коде про него ничего не писал..
Всем большое спасибо!
П.С. спасибо за уточнение кода!
Подтверждаю слова автора, у меня тоже UNO R3 и у нее тоже постоянно горит светодиод на 13 пине. Гаснет только если в скетче задашь команду погасить диод. Лично меня это не парит и я забил на это.
Если научились мигать встроенным светодиом, то измените программу так, чтобы мигание направлялось на выводы D0, D1, .......... , D13, D14, D15. При этом меняйте программу только для ОДНОГО вывода за раз. Т.о. Вы проверите исправность микроконтроллера, целостность дорожек на плате. Если светодиод предназначенный только для D13 замигает на программе для другого вывода D - напишите об этом.
Хорошо, вечером обязательно все проверю и отпишу.
Если не трудно, ответьте, пожалуйста, на такие вопросы:
"выход" (он же плюс) с сигналами для диодов выношу сразу на макетную плату (получается цепь ардуино-резистор-диод), а дальше все минусы выношу на "минус" на макетной плате, и общий "минус" переношу в GND, который в разделе POWER?
т.е. у меня будет что-то типа такого:
1. Выход №8 - макетная плата - резистор №1 - диод №1- "минус на макетной плате"
2. Выход №9 - макетная плата - резистор №2 - диод №2- "минус на макетной плате"
3. "минус на макетной плате" - GND в разделе POWER.
так правильно?
и второй вопрос: можно как-то "обнулить" тот код, который я залил на ардуину? или надо только поверх нее записывать другой код, а предыдущий тогда сам удалиться?
Спасибо
со схемой всё верно
"выход" его так и надо называть "выход" но не "плюс"
по 3 пункту - минус на макетке в Любой свободный GND на ардуине
да, при записи новой программы старая затирается
Здорово! Большое спасибо!
Залитый код хранится в Ардуино и после выключения (обесточивания) платы - ну как информация на флешке. После подачи питания на плату код снова начинает работу. Чтобы от него избавиться (если его наличие там портит Ваше настроение) нужно записать другой код - ну например от maksim.
Меня интересовало именно "обнуление". Т.е. там подержать кнопку резета, или как-то через программу в виндовсе... Чтобы "ардуина" была чистая. Но, как я понял, будет достаточно просто прописать:
void setup() {} void loop() {}и тогда ничего не будет происходить на плате вообще.
Не употребляйте слова "выход" применительно к "выводу №х" - Вас не правильно могут понять. Ведь выводы можно настроивать как на вход, так и на выход (одно из двух).
Меня интересовало именно "обнуление". Т.е. там подержать кнопку резета, или как-то через программу в виндовсе... Чтобы "ардуина" была чистая. Но, как я понял, будет достаточно просто прописать:
void setup() {} void loop() {}и тогда ничего не будет происходить на плате вообще.
Ну цикл то всеравно будет крутиться.
А вообще пусть себе код "живёт" в Ардуине до момента пока его "не выселит" следующий. Он там никому не мешает, и есть не просит.
То что не назначеный пин имеет высокий выходной лог это явно не нормально. Т.к. по умолчанию (не объявленые пины) работают как входы.
Вопрос ко всем предыдущим советчикам, кроме maksim'а.
Как ВХОД может работать ВЫХОДОМ ?
nestandart встречный вопрос, как могут с новья вести себя две одноименные уны но от разных производителей одинаково? одна оригинал, другая китай. Я лично не говорил что это нормальное поведение, но это присутствует и я это учитываю в своих дуиномарательствах.
А вот интересно програмно можно опросить состояние пинов (вход, выход, какой уровень)и вывести в сериал?
>>nestandart встречный вопрос, как могут с новья вести себя две одноименные уны но от разных производителей одинаково?<<
Было бы странно если бы каждая плата вела себя по своему.
Или там какие то новые фишки в схеме ? Есть схема конкретной платы ?
>>А вот интересно програмно можно опросить состояние пинов (вход, выход, какой уровень)и вывести в сериал?<<
Какие пины - входы, какие выходы, программа и так знает. Опрашивать и выводить куда угодно можно.
Вот схема, я ее досконально не проверял, но оч похожа.
Ой чет я походу намудрил с размером.
И так, что бы убедиться, что 13 светодиод по умолчанию* - не по умолчанию, заливаем этот пример и выкладываем сюда что в сериал-мониторе.
void setup() { Serial.begin(9600); Serial.println(DDRB, BIN); Serial.println(PORTB, BIN); } void loop(){}У меня на Duemilanove по умолчанию* действительно 13 вывод настроен на выход, но уровень естественно низкий, отсюда вывод, что это делает бутлоудер.
* после того как отработал бутлоудер
Вот что он мне выдал, но в этот момент диод на 13 пине горит.
Можно было бы предположить, что это может делать среда, но в функции init() только настройка таймеров и АЦП.
#include <Arduino.h> int main(void) { init(); #if defined(USBCON) USB.attach(); #endif setup(); for (;;) { loop(); if (serialEventRun) serialEventRun(); } return 0; }Сама функция init()
void init() { // this needs to be called before setup() or some functions won't // work there sei(); // on the ATmega168, timer 0 is also used for fast hardware pwm // (using phase-correct PWM would mean that timer 0 overflowed half as often // resulting in different millis() behavior on the ATmega8 and ATmega168) #if defined(TCCR0A) && defined(WGM01) sbi(TCCR0A, WGM01); sbi(TCCR0A, WGM00); #endif // set timer 0 prescale factor to 64 #if defined(__AVR_ATmega128__) // CPU specific: different values for the ATmega128 sbi(TCCR0, CS02); #elif defined(TCCR0) && defined(CS01) && defined(CS00) // this combination is for the standard atmega8 sbi(TCCR0, CS01); sbi(TCCR0, CS00); #elif defined(TCCR0B) && defined(CS01) && defined(CS00) // this combination is for the standard 168/328/1280/2560 sbi(TCCR0B, CS01); sbi(TCCR0B, CS00); #elif defined(TCCR0A) && defined(CS01) && defined(CS00) // this combination is for the __AVR_ATmega645__ series sbi(TCCR0A, CS01); sbi(TCCR0A, CS00); #else #error Timer 0 prescale factor 64 not set correctly #endif // enable timer 0 overflow interrupt #if defined(TIMSK) && defined(TOIE0) sbi(TIMSK, TOIE0); #elif defined(TIMSK0) && defined(TOIE0) sbi(TIMSK0, TOIE0); #else #error Timer 0 overflow interrupt not set correctly #endif // timers 1 and 2 are used for phase-correct hardware pwm // this is better for motors as it ensures an even waveform // note, however, that fast pwm mode can achieve a frequency of up // 8 MHz (with a 16 MHz clock) at 50% duty cycle #if defined(TCCR1B) && defined(CS11) && defined(CS10) TCCR1B = 0; // set timer 1 prescale factor to 64 sbi(TCCR1B, CS11); #if F_CPU >= 8000000L sbi(TCCR1B, CS10); #endif #elif defined(TCCR1) && defined(CS11) && defined(CS10) sbi(TCCR1, CS11); #if F_CPU >= 8000000L sbi(TCCR1, CS10); #endif #endif // put timer 1 in 8-bit phase correct pwm mode #if defined(TCCR1A) && defined(WGM10) sbi(TCCR1A, WGM10); #elif defined(TCCR1) #warning this needs to be finished #endif // set timer 2 prescale factor to 64 #if defined(TCCR2) && defined(CS22) sbi(TCCR2, CS22); #elif defined(TCCR2B) && defined(CS22) sbi(TCCR2B, CS22); #else #warning Timer 2 not finished (may not be present on this CPU) #endif // configure timer 2 for phase correct pwm (8-bit) #if defined(TCCR2) && defined(WGM20) sbi(TCCR2, WGM20); #elif defined(TCCR2A) && defined(WGM20) sbi(TCCR2A, WGM20); #else #warning Timer 2 not finished (may not be present on this CPU) #endif #if defined(TCCR3B) && defined(CS31) && defined(WGM30) sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 sbi(TCCR3B, CS30); sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode #endif #if defined(TCCR4B) && defined(CS41) && defined(WGM40) sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 sbi(TCCR4B, CS40); sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode #endif #if defined(TCCR5B) && defined(CS51) && defined(WGM50) sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 sbi(TCCR5B, CS50); sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode #endif #if defined(ADCSRA) // set a2d prescale factor to 128 // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. // XXX: this will not work properly for other clock speeds, and // this code should use F_CPU to determine the prescale factor. sbi(ADCSRA, ADPS2); sbi(ADCSRA, ADPS1); sbi(ADCSRA, ADPS0); // enable a2d conversions sbi(ADCSRA, ADEN); #endif // the bootloader connects pins 0 and 1 to the USART; disconnect them // here so they can be used as normal digital i/o; they will be // reconnected in Serial.begin() #if defined(UCSRB) UCSRB = 0; #elif defined(UCSR0B) UCSR0B = 0; #endif }?
Ссылку на схему выше дайте.
да там два ноля было, это я просто ресет нажал на дуине.
По поводу схемы, дать ссылку не могу по причине: не помню уже откуда ее дернул.
void setup() { pinMode(13, OUTPUT); } void loop() {}и так горит?
Погас.
Ясно, в общем там на схеме этот светодиод подключен через операционный усилитель и походу когда его вход болтается в воздухе светодиод горит. Не понятно почему у Уны бут не настраивает вывод на выход ,а у Дэмилановы настраивает....
Ну мне только одно приходит в голову: а потому!
Maksim тогда получается что без резистора нельзя подключать светодиод на 13 пин, как говорил Джереми Блюм?
?
Ссылку на схему выше дайте.
Ага, мне тоже выдал два нуля
void setup() { pinMode(13, OUTPUT); } void loop() {}и так горит?
нет, так погас.
В общем все нормально, и то что горит зеленый диод на плате - это ничего страшного, да?
у меня зеленый это питание.
Maksim тогда получается что без резистора нельзя подключать светодиод на 13 пин, как говорил Джереми Блюм?
Если не ошибаюсь, выход с ардуины 5В, а обычный светодиод имеет граничное 2-3В. Но за эти два дня эксперементов понял, что резистор в 200 Ом и в 390 Ом вообще никак не отличаются для диодов, так как эта разница в свечении крайне минимальна.
Сам не пробовал, но говорят что если подключить без резистра, то диод сгорит. (у меня их всего пару штук и стараюсь таких "эксперементов" избегать)
может кто-то проверял?
Сгорит ли диод зависит от самого диода. Если он хапнет смертельный для себя ток , то сгорит. А еще может попутно сжечь выход МК.
Для норамальной работы светодиоду нужно около 10мА. Считаем по формуле R=5/0.01=500 Ом.
А вообще , разница между 500 Ом и 1КОм будет не очень заметна (если конечно это обычный мелкий светодиод).
>>Если не ошибаюсь, выход с ардуины 5В, а обычный светодиод имеет граничное 2-3В. <<
Два вольта это падение напряжения на нем.
>>может кто-то проверял?<<
Вы еще моторчик напрямую подцепите.
Возьмите за правило , то что "Все что подключается к выходу должно подключаться через токограничительный резистор 200-300Ом".
А то, сегодня светодиод сгорит а завтра побежите за новой платой.