Занимаюсь этим в первый раз. Написала код для лампы, которая реагирует на хлопки. Подключила детектор звука и Диоды Neopixel Ring 12 diods. Использую Arduino Nano. При проверке кода пишет :" Ошибка компиляции для платы Arduino Nano." Не могу понять в чем проблема. Помогите пожалуйста. Код (C++): #include <Adafruit_NeoPixel.h> //adafruit driver should be included into library as .ZIP #ifdef __AVR__ #include <avr/power.h> #endif // Which pin on the Arduino is connected to the NeoPixels? // On a Trinket or Gemma we suggest changing this to 1 #define PIN 10 // How many NeoPixels are attached to the Arduino? #define NUMPIXELS 12 Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Arduino pin numbers const int DO_pin = 2; //Digital pin 2 const int AO_pin = 0; //Analogue pin 0 int sound; int led1 = 10; //adafruit neopixel LED = Digital 10 // это массив задержек между переключениями состояния системы ( в милисекундах) unsigned long delays[] = { // Состояние White cделано по аналогии с RGB только в обратную сторону. 1200000UL, 180000UL, 15000UL, // RGB состояние, оно же стартовое 480000UL, 15000UL, 240000UL, 180000UL }; const int RGB_START_STATE = 3; // начальное состояние const int WHITE_DISABLED = 5; // без возможности переключения обратно посредством хлопка. int currentState = RGB_START_STATE; // текущее состояние системы unsigned long startPhase = 0; // это число милисекунд с начала работы программы, в момент изменения состояния. Переполнится за 50 дней если хелп не врет. void setup() { pinMode(DO_pin, INPUT); //Sound is at Digital pin 0 pinMode(led1, OUTPUT); //neopixel LED is at digital 10 Serial.begin(9600); currentState = RGB_START_STATE; startPhase = millis(); strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { sound = analogRead(AO_pin); //sound is detected with Sound Sensor at Analog pin 0. //When sound is louder, number gets smaller******** if (sound < 500) { //When sound sensor detects sound less than 500, delay(500); //it pauses for .5 seconds so that commands are read if (currentState != WHITE_DISABLED) { // без возможности переключения обратно посредством хлопка. currentState = 0; // Хлопок переводит ее из обычного осотояния, в состояние свечения белым светом, ярко. startPhase = millis(); playCurrentPhase(); } } unsigned long currentTick = millis(); if (currentTick - startPhase > delays[currentState]) { // время текущей фазы истекло, переключаемся startPhase = currentTick; currentState++; if (currentState == sizeof(delays)) currentState = RGB_START_STATE; // дошли до конца программы, возвращаемся в стартовое состояние playCurrentPhase(); } } void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { for(i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); delay(wait); } } uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } void colorSet(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); delay(wait); } strip.show(); } void playCurrentPhase() { switch(currentState){ case 0: colorWipe(strip.Color(255, 255, 255),50); // white break; case 1: strip.setBrightness(128); break; case 2: strip.setBrightness(64); break; case 3: colorWipe(strip.Color(79, 240, 231),50); break; case 4: colorWipe(strip.Color(79, 240, 98),50); delay(200); colorWipe(strip.Color(204, 239, 11),50); delay(200); colorWipe(strip.Color(239, 167, 11),50); break; case 5: rainbow(40); break; case 6: colorSet(strip.Color(241, 15, 137),50); break; } }
У Вас не установлена библиотека Adafruit_NeoPixel.h Скачайте http://forum.amperka.ru/attachments...3/?temp_hash=7647ec90a5f238a215d1bd0d7cbec48f И установите библиотеку.
Работает пока не очень хорошо. Идея проекта в том чтобы дать в каком то роде личность данному предмету, то есть лампе. В итоге должно получится что то вроде лампы, которая не имеет возможности выключения. У нее есть два состояния - рабочее, когда она светит белым цветом и ярко, и состояние покоя, когда она светит разными цветами и переливается. Человек, спомощью хлопка может переключить ее из состояния ожидания в состояние работы.Так же, она имеет способность уставать, то есть, когда она долго работает через некоторое время она начинает на пару секунд мелькать цветным, а после вообще автоматический переходит в режим ожидания. И в режиме ожидания, по той же схеме через некоторое время она начинает тускнеть. Только вот пока код почему то не работает( Только белым и светит, не пойму почему((
Нет, я учусь в Британском дизайнерском вузе и эта лампа, собственно, один из моих проектов по учебе. Коментарии на английском сделаны, чтобы учителям понятно было)
Код с нуля писали, с подругой. Мы сначала попробывали простой написать, просто на включение и выключение. Он работал. А когда усложнять его начали перестал. Подключили все вроде правильно.