Доброго времени суток. Подскажите пожалуйста, можно ли как-то через множитель выбрать конкретный диод и сним проводить манипуляции. И как это прописать?
http://cxem.net/arduino/arduino166.php но я не понял с второй частью.. у меня вторая часть не получилась
) Время, синяки, и боль от душераздерающих нерабочих скетчей. Думаю догодаешся, если день-два поседишь. Ну если вопросы есть, буду рад помочь. Хотя сам я не профи, но помогу чем могу.
У меня возник вопрос. Имеется часть скетча: Код (C++): const int latchPin = 8; const int clockPin = 12; const int dataPin = 11; char inputString[2]; void setup() { pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); Serial.begin(9600); Serial.println("reset"); } void loop() { for (int thisLed = 0; thisLed < 16; thisLed++) { registerWrite(thisLed, HIGH); if (thisLed > 0) { registerWrite(thisLed - 1, LOW); } else { registerWrite(15, LOW); } delay(250); } } void registerWrite(int whichPin, int whichState) { unsigned int bitsToSend = 0; digitalWrite(latchPin, LOW); bitWrite(bitsToSend, whichPin, whichState); byte registerOne = highByte(bitsToSend); byte registerTwo = lowByte(bitsToSend); shiftOut(dataPin, clockPin, MSBFIRST, registerTwo); shiftOut(dataPin, clockPin, MSBFIRST, registerOne); digitalWrite(latchPin, HIGH); } Вопрос, а что если у меня 9 сдвиговых регистров? То как правильно прописать эту часть кода?: Код (C++): void registerWrite(int whichPin, int whichState) { unsigned int bitsToSend = 0; digitalWrite(latchPin, LOW); bitWrite(bitsToSend, whichPin, whichState); byte registerOne = highByte(bitsToSend); byte registerTwo = lowByte(bitsToSend); shiftOut(dataPin, clockPin, MSBFIRST, registerTwo); shiftOut(dataPin, clockPin, MSBFIRST, registerOne); digitalWrite(latchPin, HIGH);
Не совсем понятен вопрос, что значит множитель выбрать? Доступ к конкретному биту интересует? Пример: Код (C++): char i = 0; i |= 1; // установка 0-го бита переменной i в 1 i |= 1 << 3; // установка 3-го бита в 1 (отсчет с 0, т.е. первый бит -- это нулевой) i &= ~(1 << 4); // Сброс 4-го бита в 0 Если регистры каскадом, то сначала пихается байт предназначенный самому дальнему регистру.
Mestniy, начинайте изъясняться по-русски. Что это за название темы - "сдвигового регистра"? Формулируйте так, чтобы было понятно не только вам, но и другим. Какой множитель? Какой диод и где он находится? Тут с телепатами туго, еще не все из отпусков вернулись.
Заведите массив на 9 байт. Зачем его смотреть? Вы его и так знаете, вы же сами устанавливаете его состояние.
Можете пожалуйста поподробнее про 9-ти битовую систему? Как она приминима к моему коду? И про посмотреть, я имел ввиду считать. Например если registerRead(6, LOW);, то выполнить действие! Заранее спасибо...
Вы байты с битами путаете. Один регистр - 1 байт. 9 регистров - 9 байт. У вас регистры выходные, в них можно только писать. Читают с входных регистров.
Не пора ли вам почитать книжек и выучить С++? А то вы уже предлагаете писать прошивки за деньги, а сами при этом задаете вопросы уровня новичка.
Читать книжки вредно. Надо задавать вопросы. Все правильно товарищ делает. У него есть отличный пример.
Спасибо Игорь за поддержку! Я извиняюсь за глупые вопросы. На заказ я делаю только то что умею. Но спасибо за советы. Обязательно буду продолжать изучать C++.