Как ее остановить??!!

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Боже, кто-то, помогите пожалуйста! 

не могу найти как удалить то, что я прописал! 

установил программу для виндовса, сделал все что описано в http://arduino.ru/Guide/Windows и теперь она постоянно мигает >_<

где, где найти то что прописано в нутри ее? меня это мигание начинает раздрожать =\\\

 

пожалуйста, помогите 

maksim
Offline
Зарегистрирован: 12.02.2012

Кто мигает?

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

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

 

у меня нигде не отображается тот код, который я загрузил на ардуину. и не знаю как его удалить, чтобы остановить это мигание

maksim
Offline
Зарегистрирован: 12.02.2012

Залейте этот пример 

void setup() {}
void loop() {}

 

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Максим, я бы Вас расцеловал =) 

теперь могу пойти спать спокойно. спасибо большое!

этот код обнуляет все что я раньше написал?

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

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

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Светодид не будет гореть пока вы ему не прикажите. Или пока соблюдается условие.

Скорее всего вы зали что то другое.

Попробуйте такую программу. С ней точно ничего не должно мигать.

void setup()
{                
  pinMode(13, OUTPUT);     
}

void loop() 
{
     
  digitalWrite(13, LOW);   

}

 

msng
Offline
Зарегистрирован: 07.06.2012

gloriaDeo пишет:

теперь встроенный зеленый светодиод постоянно горит

так это индикатор питания светит

 

paf
Offline
Зарегистрирован: 25.01.2013

:)))   Ардуёнок!?

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

У меня UNO R3. Там красный - индикатор питания, а зеленый - просто встроенный светодиод. и они оба светились.

спасибо, nestandart, все помогло и теперь ничего лишнего не мигает =)

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Но когда прописываю, чтобы шло питание от других выходов и замыкаю их на 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 выхода, а он начинает светится. что не так? или он должен работать, когда идет ток через ардуину куда-то дальше?

gena
Offline
Зарегистрирован: 04.11.2012

  Может автор темы скажет какая именно у него плата Arduino? А что бы не раздражало мигание, накройте пока плату чем нибудь непрозрачным. Да и ещё - не надо другие выходы замыкать на GND.

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

у меня Ардуино UNO R3. 

Постараюсь объяснить суть проблемы:

Вчера вечером первый раз подключил ардуину и попробовал сделать как описно в "обучении". Все получилось правильно, и светодиод с выхода №13 начал мигать (который на плате).

Потом я захотел подключить макетную плату: вставил "+" из выхода №12 в макетную плату, потом там из "+" через резистор включил диод, а минус замкнул на GND. и у меня начал мигать диод на макетной плате и диод на ардуине.

Потом я написал сюда эту тему, и обнулил данные как посоветовал Максим.  Диоды мигать перестали. Но когда я по новой прописал мигание для выхода №12, то у меня просто стал светится встроенный светодиод (который для обучения). 

Пока все это писал, то возник вопрос: может это из-за того, что я минус вывожу в GND? поэтому у меня и светится встроенный диод? и если это делаю не правильно, то куда тогда мне выводить минус с макетной платы? 

 

Заранее благодарен.

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

может быть проблема в том, что я замыкал на GND который находится возле 13 выхода, а надо было замыкать там, где POWER?

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

"LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит. "

вот у меня горит вот этот диод, хотя на выход №13 вообще ничего не прописанно. или он вообще постоянно должен гореть? 

gena
Offline
Зарегистрирован: 04.11.2012

 Отключите ВСЕ провода от макетной платы и снова поуправляйте через скетч "Blink" встроенным на плате светодиодом (D13). Потренеруйтесь управлять длительностью свечения этого светодиода. И лишь затем начинайте, помалу, усложнять задачи.

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Встроенным светодиодом мигать научился. т.е. для этого мне вообще не нужны никакие проводки. 

Потом у меня возникла проблема как отменить это мигание (так как я полагал, что вся информация, которая в процессоре, будет выводиться куда-то на монитор, и я ее могу удалить просто выделив и нажав "Delete"). Но не тут то было: походу все записывается, а чтобы удалить - надо перезаписать что-то другое. Поэтому создал эту тему. 

Когда прописываю код, который отменяет свечение этого диода (который предложил Nestandart), то светиться прекращает.

Но когда я прописываю мигание диода из другого выхода (уже через макетную плату), то опять начинает светится этот встроенный диод. 

Может этот светодиод (на ардуине он пронумерован буквой L и находится рядом с RX и TX) должен всегда гореть, когда ардуина работает, и я просто зря паникую?

msng
Offline
Зарегистрирован: 07.06.2012

на этот диод не обращайте внимания

вы же его не используете в своей программе, значит и подключать вывод никуда не будете...
 если не хотите чтоб он светил, назначьте его как выход и прижмите его к земле.

msng
Offline
Зарегистрирован: 07.06.2012
	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);              // ждем чуть-чуть
	}

как то так, если поправить ваш код

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Та не, меня он уже не отвлекает. Просто испугался что что-то делал не так, поэтому он и светился, хотя в коде про него ничего не писал.. 

Всем большое спасибо!

 

П.С. спасибо за уточнение кода!

triada13
Offline
Зарегистрирован: 04.01.2013

Подтверждаю слова автора, у меня тоже UNO R3 и у нее тоже постоянно горит светодиод на 13 пине. Гаснет только если в скетче задашь команду погасить диод. Лично меня это не парит и я забил на это.

gena
Offline
Зарегистрирован: 04.11.2012

 Если научились мигать встроенным светодиом, то измените программу так, чтобы мигание направлялось на выводы D0, D1, .......... , D13, D14, D15. При этом меняйте программу только для ОДНОГО вывода за раз. Т.о. Вы проверите исправность микроконтроллера, целостность дорожек на плате. Если светодиод предназначенный только для D13 замигает на программе для другого вывода D - напишите об этом.

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Хорошо, вечером обязательно все проверю и отпишу.

Если не трудно, ответьте, пожалуйста, на такие вопросы:

"выход" (он же плюс) с сигналами для диодов выношу сразу на макетную плату (получается цепь ардуино-резистор-диод), а дальше все минусы выношу на "минус" на макетной плате, и общий "минус" переношу в GND, который в разделе POWER? 

т.е. у меня будет что-то типа такого: 

1. Выход №8 - макетная плата - резистор №1 - диод №1- "минус на макетной плате"

2. Выход №9 - макетная плата - резистор №2 - диод №2- "минус на макетной плате"

3. "минус на макетной плате" - GND в разделе POWER.

так правильно?

 

и второй вопрос: можно как-то "обнулить" тот код, который я залил на ардуину? или надо только поверх нее записывать другой код, а предыдущий тогда сам удалиться?

 

Спасибо

msng
Offline
Зарегистрирован: 07.06.2012

со схемой всё верно

"выход" его так и надо называть "выход"  но не "плюс"

по 3 пункту - минус на макетке в Любой свободный GND на ардуине 

да, при записи новой программы старая затирается

 

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Здорово! Большое спасибо!

gena
Offline
Зарегистрирован: 04.11.2012

 Залитый код хранится в Ардуино и после выключения (обесточивания) платы - ну как информация на флешке. После подачи питания на плату код снова начинает работу. Чтобы от него избавиться (если его наличие там портит Ваше настроение) нужно записать другой код  - ну например от maksim.

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Меня интересовало именно "обнуление". Т.е. там подержать кнопку резета, или как-то через программу в виндовсе... Чтобы "ардуина" была чистая. Но, как я понял, будет достаточно просто прописать:

void setup() {}
void loop() {}

и тогда ничего не будет происходить на плате вообще. 

gena
Offline
Зарегистрирован: 04.11.2012

  Не употребляйте слова "выход" применительно к "выводу №х" - Вас не правильно могут понять. Ведь выводы можно настроивать как на вход, так и на выход (одно из двух).

triada13
Offline
Зарегистрирован: 04.01.2013

gloriaDeo пишет:

Меня интересовало именно "обнуление". Т.е. там подержать кнопку резета, или как-то через программу в виндовсе... Чтобы "ардуина" была чистая. Но, как я понял, будет достаточно просто прописать:

void setup() {}
void loop() {}

и тогда ничего не будет происходить на плате вообще. 

Ну цикл то всеравно будет крутиться.

gena
Offline
Зарегистрирован: 04.11.2012

  А вообще пусть себе код "живёт" в Ардуине до момента пока его "не выселит" следующий. Он там никому не мешает, и есть не просит.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

То что не назначеный пин имеет высокий выходной лог это явно не нормально. Т.к. по умолчанию (не объявленые пины) работают как входы.

Вопрос ко всем предыдущим советчикам, кроме maksim'а.

Как ВХОД может работать ВЫХОДОМ ?

 

triada13
Offline
Зарегистрирован: 04.01.2013

nestandart  встречный вопрос, как могут с новья вести себя две одноименные уны но от разных производителей одинаково? одна оригинал, другая китай. Я лично не говорил что это нормальное поведение, но это присутствует и я это учитываю в своих дуиномарательствах.

А вот интересно програмно можно опросить состояние пинов (вход, выход, какой уровень)и вывести в сериал?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>nestandart встречный вопрос, как могут с новья вести себя две одноименные уны но от разных производителей одинаково?<<

Было бы странно если бы каждая плата вела себя по своему.

Или там какие то новые фишки в схеме ? Есть схема конкретной платы ?

>>А вот интересно програмно можно опросить состояние пинов (вход, выход, какой уровень)и вывести в сериал?<<

Какие пины - входы, какие выходы, программа и так знает. Опрашивать и выводить куда угодно можно.

 

 

triada13
Offline
Зарегистрирован: 04.01.2013

Вот схема, я ее досконально не проверял, но оч похожа.

triada13
Offline
Зарегистрирован: 04.01.2013

Ой чет я походу намудрил с размером.

maksim
Offline
Зарегистрирован: 12.02.2012

И так, что бы убедиться, что 13 светодиод по умолчанию* - не по умолчанию, заливаем этот пример и выкладываем сюда что в сериал-мониторе.

void setup() 
{
  Serial.begin(9600);
  Serial.println(DDRB, BIN);
  Serial.println(PORTB, BIN);
}
void loop(){}

У меня на Duemilanove по умолчанию* действительно 13 вывод настроен на выход, но уровень естественно низкий, отсюда вывод, что это делает бутлоудер.

* после того как отработал бутлоудер

triada13
Offline
Зарегистрирован: 04.01.2013
0
0
0
0

Вот что он мне выдал, но в этот момент диод на 13 пине горит.

maksim
Offline
Зарегистрирован: 12.02.2012

Можно было бы предположить, что это может делать среда, но в функции 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
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

triada13 пишет:
Вот что он мне выдал
Может всетаки

0
0

?

Ссылку на схему выше дайте.

triada13
Offline
Зарегистрирован: 04.01.2013

да там два ноля было, это я просто ресет нажал на дуине.

По поводу схемы, дать ссылку не могу по причине: не помню уже откуда ее дернул.

maksim
Offline
Зарегистрирован: 12.02.2012

 

triada13 пишет:
но в этот момент диод на 13 пине горит.

void setup() {                
  pinMode(13, OUTPUT);     
}
void loop() {}

и так горит?

triada13
Offline
Зарегистрирован: 04.01.2013

Погас.

maksim
Offline
Зарегистрирован: 12.02.2012

Ясно, в общем там на схеме этот светодиод подключен через операционный усилитель и походу когда его вход болтается в воздухе светодиод горит. Не понятно почему у Уны бут не настраивает вывод на выход ,а у Дэмилановы настраивает....

triada13
Offline
Зарегистрирован: 04.01.2013

Ну мне только одно приходит в голову: а потому!

triada13
Offline
Зарегистрирован: 04.01.2013

Maksim тогда получается что без резистора нельзя подключать светодиод на 13 пин, как говорил Джереми Блюм?

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

maksim пишет:

triada13 пишет:
Вот что он мне выдал
Может всетаки

0
0

?

Ссылку на схему выше дайте.

Ага, мне тоже выдал два нуля

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

maksim пишет:

 

triada13 пишет:
но в этот момент диод на 13 пине горит.

void setup() {                
  pinMode(13, OUTPUT);     
}
void loop() {}

и так горит?

нет, так погас.

В общем все нормально, и то что горит зеленый диод на плате - это ничего страшного, да?

triada13
Offline
Зарегистрирован: 04.01.2013

у меня зеленый это питание.

AlexSK
Offline
Зарегистрирован: 15.03.2012

triada13 пишет:

Maksim тогда получается что без резистора нельзя подключать светодиод на 13 пин, как говорил Джереми Блюм?

Так же как и на любой другой вывод не желательно подключать светодиод без резистора.

gloriaDeo
Offline
Зарегистрирован: 26.02.2013

Если не ошибаюсь, выход с ардуины 5В, а обычный светодиод имеет граничное 2-3В. Но за эти два дня эксперементов понял, что резистор в 200 Ом и в 390 Ом вообще никак не отличаются для диодов, так как эта разница в свечении крайне минимальна. 

 

Сам не пробовал, но говорят что если подключить без резистра, то диод сгорит. (у меня их всего пару штук и стараюсь таких "эксперементов" избегать)

 

может кто-то проверял?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Сгорит ли диод зависит от самого диода. Если он хапнет смертельный для себя ток , то сгорит. А еще может попутно сжечь выход МК.

Для норамальной работы светодиоду нужно около 10мА. Считаем по формуле R=5/0.01=500 Ом.

А вообще , разница между 500 Ом и 1КОм будет не очень заметна (если конечно это обычный мелкий светодиод).

>>Если не ошибаюсь, выход с ардуины 5В, а обычный светодиод имеет граничное 2-3В. <<

Два вольта это падение напряжения на нем.

>>может кто-то проверял?<<

Вы еще моторчик напрямую подцепите. 

Возьмите за правило , то что "Все что подключается к выходу должно подключаться через токограничительный резистор 200-300Ом".

А то, сегодня светодиод сгорит а завтра побежите за новой платой.