shiftOut error: too many args
- Войдите на сайт для отправки комментариев
Сб, 21/01/2012 - 01:58
вот такое выдает IDE, уже мозг сломал.. Какого?? Простейший код затестить регистры, вчера работал - добавил только реакцию на кнопку и вот.. Убирание изменений эффекта не дает..
//Пин подключен к ST_CP входу 74HC595 #define latchPin 8 //Пин подключен к SH_CP входу 74HC595 #define clockPin 12 //Пин подключен к DS входу 74HC595 #define dataPin 11 //кнопка TEST #define buttonPin A2 //переменные int wt = 2000; void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(13, OUTPUT); //встроенный светодиод //активируем кнопку pinMode(buttonPin, OUTPUT); digitalWrite(buttonPin, HIGH); //подтягиваем внутренний резистор МК //start signal for (int x=0; x<=4; x++) { digitalWrite(13, HIGH); delay(50); digitalWrite(13, LOW); delay(50); } } void loop() { if (digitalRead(buttonPin) == LOW) { if (wt == 2000) wt = 1; else wt = 2000; } //вкл-выкл go(B11111111); digitalWrite(13, HIGH); delay(wt); go(B00000000); delay(wt); } void go(byte val){ // устанавливаем синхронизацию "защелки" на LOW digitalWrite(latchPin, LOW); // передаем отсчет для вывода 8 shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 7 shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 6 shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 5 shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 4 shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 3 shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 2 (P-мосфет) shiftOut(dataPin, clockPin, MSBFIRST, val); // передаем отсчет для вывода 1 (P-мосфет) shiftOut(dataPin, clockPin, MSBFIRST, val); //"защелкиваем" регистр, тем самым устанавливая значения на выходах digitalWrite(latchPin, HIGH); }
твойуж мать, те пины которые использует shiftOut нельзя через #define задавать. Только int pin = ... Вопрос: почему?
Спешу предположить, что, залавая номер пина через #define, получаем константу типа char, а shiftOut в качестве первого (а также второго) параметра просит int.
М.б. что-то вроде
#define Pin (int)12
сработает?
О_о наверняка вы правы.. чуть позже проверю, комп с ардуиной разбирать счас буду, шумит больно..
Проверил финт с (int) - не прошло...
наверняка этот нюанс еще где нибудь может вылезти, особенно в чужих (не родных) библиотеках. Надо запомнить что вот такой нюанс - он есть )
В это трудно поверить но, если заменить все "dataPin" и "clockPin" на "datapin" и "clockpin" (т.е. pin написать с маленькой буквы), то код будет работать без ошибок. По крайней мере у меня заработал.
о_О WTF?)
буду пробовать)