Помогите новичкую
- Войдите на сайт для отправки комментариев
Сб, 06/02/2016 - 23:29
Помогите разобраться с двоичным кодом. Написал такой скетч, но индикатор не реагирует на нажатие кнопок.
int SF_1 = 0; int SF_2 = 0; int SF_3 = 0; int SF_4 = 0; void setup() { pinMode(0,OUTPUT); pinMode(1,OUTPUT); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(10,INPUT); pinMode(11,INPUT); pinMode(12,INPUT); pinMode(13,INPUT); } void digitalWrites(byte _4bit) { digitalWrite(0, _4bit&B0001); digitalWrite(1, _4bit&B0010); digitalWrite(2, _4bit&B0100); digitalWrite(3, _4bit&B1000); } void loop() { SF_1 = digitalRead(13); SF_2 = digitalRead(12); SF_3 = digitalRead(11); SF_4 = digitalRead(10); if(SF_1 == HIGH) { digitalWrites(1); } else { digitalWrites(0); } if(SF_2 == HIGH) { digitalWrites(2); } else { digitalWrites(0); } if(SF_3 == HIGH) { digitalWrites(4); } else { digitalWrites(0); } if(SF_4 ==HIGH) { digitalWrites(8); } else { digitalWrites(0); } }
1. Вы не могли бы как-то понятнее писать. Что за индикатор, как именно он должен реагировать и т.п. Что за логика у Вас в функции loop()?
2. Что по Вашему означает глубокомысленная конструкция
digitalWrite(0, _4bit&B0001); ?
3. Посмотрите на логику в своём loop(). Не знаю, что Вы хотели сделать (Вы же поленились это описать), но сделано там явно не то, чего Вы хотели. Например, если SF_4 == LOW, то у Вас будет всё погашено НЕЗАВИСИМО от того какие значения принимают все остьные SF_x. Они могут быть любыми. Вы же не этого хотели?
Прошу прощения за глупо заданный вопрос. К Arduino MICRO к выводам D0 - D3 через дешифратор SD4511 подключён семисегментный светодиодный индикатор. D0 = 1, D1 = 2, D3 = 4, D4 = 8. К выводам D10 - D13 подключены кнопки. SF_1 = D13, SF_2 = D12, SF_3 = D11, SF_4 = D10. При нажатии на кнопку SF_1 на индикаторе должна высветиться 1, SF_2 - 2, SF_3 - 4, SF_4 - 8. Но этого у меня не получилось. На индикаторе горит 0 не меняет свои покозания при нажатии на кнопки. Информацию брал с этого поста http://arduino.ru/forum/programmirovanie/odno-uslovie-na-4-vyvoda . Если у когото возникнет вопрос зачем мне это нужно отвечаю, изучаю С++ и Arduino.
Уважаемый ЕвгенийП удалил все else { digitalWrites(0); }. Ничего не изменилось.
Это в лоб без придумок.
К сносу
Тебе в другой форум
http://arduino.ru/forumy/ishchu-ispolnitelya
Форум почитайте, Жека вроде и скорость мерил и пулялку строил.