помогите со скобками
- Войдите на сайт для отправки комментариев
Сб, 27/08/2016 - 13:58
Всем привет!
после скрещивания двух кодов получился вот такой код
#define REMOTEXY_MODE__HC05_HARDSERIAL
#include <RemoteXY.h>
/* настройки соединения */
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600
/* конфигурация интерфейса */
unsigned char RemoteXY_CONF[] =
{ 4,11,61,0,6,5,2,6,0,0
,0,63,63,1,0,61,61,2,1,1
,78,25,12,12,26,67,12,12,2,82
,0,67,0,70,41,27,7,24,86,20
,5,3,11,130,1,21,53,20,20,22
,63,20,20,9,130,1,74,21,20,20
,53,20,20,20,9 };
/* структура определяет все переменные вашего интерфейса управления */
struct {
/* input variable */
unsigned char rgb_1_r; /* =0..255 значение Красного цвета */
unsigned char rgb_1_g; /* =0..255 значение Зеленого цвета */
unsigned char rgb_1_b; /* =0..255 значение Синего цвета */
unsigned char button_1; /* =1 если кнопка нажата, иначе =0 */
/* output variable */
char text_1[11]; /* =строка оканчивающаяся нулем UNICODE */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_BUTTON_1 13
int regim=1;
int flag=0;
#include "FastLED.h"
#define DATA_PIN 3
#define NUM_LEDS 45
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
#define BRIGHTNESS 96
#define FRAMES_PER_SECOND 120
CRGB leds[NUM_LEDS];
#define pot1 A0
#define pot2 A1
#define pot3 A2
void setup()
{
RemoteXY_Init ();
pinMode (PIN_BUTTON_1, OUTPUT);
delay(2000);
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
pinMode(10,INPUT);
// пин с потенциометром - вход
pinMode(pot1, INPUT);
pinMode(pot2, INPUT);
pinMode(pot3, INPUT);
FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
//FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
// set master brightness control
FastLED.setBrightness(BRIGHTNESS); // TODO you setup code
}
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patterns
void loop()
{
// Call the current pattern function once, updating the 'leds' array
RemoteXY_Handler ();
digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH);
int X;
int Y;
int Z;
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
if(digitalRead(A4)==HIGH||(PIN_BUTTON_1)==HIGH&&flag==0)//если кнопка нажата
// и перемення flag равна 0 , то ...
{
regim++;
flag=1;
//это нужно для того что бы с каждым нажатием кнопки
//происходило только одно действие
// плюс защита от "дребезга" 100%
if(regim>4)//ограничим количество режимов
{
regim=1;//так как мы используем только одну кнопку,
// то переключать режимы будем циклично
}
}
if(digitalRead(A4)==LOW||(PIN_BUTTON_1)==LOW&&flag==1)//если кнопка НЕ нажата
//и переменная flag равна - 1 ,то ...
{
flag=0;//обнуляем переменную "knopka"
}
if(regim==1)//первый режим
{
X = (analogRead(pot1) / 4) ;
Y = (analogRead(pot2) / 4);
Z = (analogRead(pot3) / 4) ;
// выдаём результат на светодиод
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(X,Y,Z);
FastLED.show(); /* текущее состояние C */
//здесь может быть любое ваше действие
}
if(regim==2)//второй режим
{
X= RemoteXY.rgb_1_r;
Y= RemoteXY.rgb_1_g;
Z= RemoteXY.rgb_1_b; // TODO you loop code
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(X,Y,Z);
FastLED.show(); // используйте структуру RemoteXY для передачи данных
delay(1);
//здесь может быть любое ваше действие
}
if(regim==3)//третий режим
{
//здесь может быть любое ваше действие
}
if(regim==4)//четвертый режим
{
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(0,255,0);
FastLED.show(); // используйте структуру RemoteXY для передачи данных
delay(1); //здесь может быть любое ваше действие
}
}
}
но компилятор ругается на скобки,
Arduino: 1.6.6 (Windows 7), Плата:"Arduino Nano, ATmega328"
WARNING: Spurious .github folder in 'Adafruit NeoPixel' library
In file included from C:\Users\Pavel\AppData\Local\Temp\arduino_6a661097979fe2d54851b6345b892d09\sketch_aug27a.ino:45:0:
C:\Users\Pavel\Documents\Arduino\libraries\FastLED-master/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.001
# pragma message "FastLED version 3.001.001"
^
sketch_aug27a:84: error: 'rainbow' was not declared in this scope
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
^
sketch_aug27a:84: error: 'rainbowWithGlitter' was not declared in this scope
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
^
sketch_aug27a:84: error: 'confetti' was not declared in this scope
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
^
sketch_aug27a:84: error: 'sinelon' was not declared in this scope
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
^
sketch_aug27a:84: error: 'juggle' was not declared in this scope
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
^
sketch_aug27a:84: error: 'bpm' was not declared in this scope
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
^
C:\Users\Pavel\AppData\Local\Temp\arduino_6a661097979fe2d54851b6345b892d09\sketch_aug27a.ino: In function 'void loop()':
sketch_aug27a:169: error: 'nextPattern' was not declared in this scope
EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically
^
sketch_aug27a:175: error: a function-definition is not allowed here before '{' token
{
^
sketch_aug27a:181: error: a function-definition is not allowed here before '{' token
{
^
sketch_aug27a:187: error: a function-definition is not allowed here before '{' token
{
^
sketch_aug27a:194: error: a function-definition is not allowed here before '{' token
{
^
sketch_aug27a:249: error: expected '}' at end of input
}
^
sketch_aug27a:249: error: expected '}' at end of input
sketch_aug27a:249: error: expected '}' at end of input
Несколько библиотек найдено для "RemoteXY.h"
Используется: C:\Users\Pavel\Documents\Arduino\libraries\RemoteXY
Не используется: C:\Program Files (x86)\Arduino\libraries\RemoteXY
exit status 1
'rainbow' was not declared in this scope
помогите пожалуйста решить эту проблему, зарание благодарю за ответ.
помогите пожалуйста решить эту проблему, зарание благодарю за ответ.
А Яндекс.Толмач русским говорит на:
sketch_aug27a:249 ошибка: ожидается '}' в конце ввода
^№ строки в которой ошибка.
Значит IDE увидел "закрывающую скобку" не там, где ожидал ее.
Подгони курсор на эту скобку и редактор тебе покажет где ее "парная открывающая".
#define REMOTEXY_MODE__HC05_HARDSERIAL #include <RemoteXY.h> /* настройки соединения */ #define REMOTEXY_SERIAL Serial #define REMOTEXY_SERIAL_SPEED 9600 /* конфигурация интерфейса */ unsigned char RemoteXY_CONF[] = { 4,11,61,0,6,5,2,6,0,0 ,0,63,63,1,0,61,61,2,1,1 ,78,25,12,12,26,67,12,12,2,82 ,0,67,0,70,41,27,7,24,86,20 ,5,3,11,130,1,21,53,20,20,22 ,63,20,20,9,130,1,74,21,20,20 ,53,20,20,20,9 }; /* структура определяет все переменные вашего интерфейса управления */ struct { /* input variable */ unsigned char rgb_1_r; /* =0..255 значение Красного цвета */ unsigned char rgb_1_g; /* =0..255 значение Зеленого цвета */ unsigned char rgb_1_b; /* =0..255 значение Синего цвета */ unsigned char button_1; /* =1 если кнопка нажата, иначе =0 */ /* output variable */ char text_1[11]; /* =строка оканчивающаяся нулем UNICODE */ /* other variable */ unsigned char connect_flag; /* =1 if wire connected, else =0 */ } RemoteXY; ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// #define PIN_BUTTON_1 13 int regim=1; int flag=0; #include "FastLED.h" #define DATA_PIN 3 #define NUM_LEDS 45 #define LED_TYPE WS2811 #define COLOR_ORDER GRB #define BRIGHTNESS 96 #define FRAMES_PER_SECOND 120 CRGB leds[NUM_LEDS]; #define pot1 A0 #define pot2 A1 #define pot3 A2 void setup() { RemoteXY_Init (); pinMode (PIN_BUTTON_1, OUTPUT); delay(2000); FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS); pinMode(10,INPUT); // пин с потенциометром - вход pinMode(pot1, INPUT); pinMode(pot2, INPUT); pinMode(pot3, INPUT); FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); //FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); // set master brightness control FastLED.setBrightness(BRIGHTNESS); // TODO you setup code } typedef void (*SimplePatternList[])(); SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm }; uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current uint8_t gHue = 0; // rotating "base color" used by many of the patterns void loop() { // Call the current pattern function once, updating the 'leds' array RemoteXY_Handler (); digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH); int X; int Y; int Z; // TODO you loop code // используйте структуру RemoteXY для передачи данных if(digitalRead(A4)==HIGH||(PIN_BUTTON_1)==HIGH&&flag==0)//если кнопка нажата // и перемення flag равна 0 , то ... { regim++; flag=1; //это нужно для того что бы с каждым нажатием кнопки //происходило только одно действие // плюс защита от "дребезга" 100% if(regim>4)//ограничим количество режимов { regim=1;//так как мы используем только одну кнопку, // то переключать режимы будем циклично } } if(digitalRead(A4)==LOW||(PIN_BUTTON_1)==LOW&&flag==1)//если кнопка НЕ нажата //и переменная flag равна - 1 ,то ... { flag=0;//обнуляем переменную "knopka" } if(regim==1)//первый режим { X = (analogRead(pot1) / 4) ; Y = (analogRead(pot2) / 4); Z = (analogRead(pot3) / 4) ; // выдаём результат на светодиод for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(X,Y,Z); FastLED.show(); /* текущее состояние C */ //здесь может быть любое ваше действие } if(regim==2)//второй режим { X= RemoteXY.rgb_1_r; Y= RemoteXY.rgb_1_g; Z= RemoteXY.rgb_1_b; // TODO you loop code for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(X,Y,Z); FastLED.show(); // используйте структуру RemoteXY для передачи данных delay(1); //здесь может быть любое ваше действие } if(regim==3)//третий режим { gPatterns[gCurrentPatternNumber](); // send the 'leds' array out to the actual LED strip FastLED.show(); // insert a delay to keep the framerate modest FastLED.delay(1000/FRAMES_PER_SECOND); // do some periodic updates EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically } #define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0])) void nextPattern() { // add one to the current pattern number, and wrap around at the end gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns); } void rainbow() { // FastLED's built-in rainbow generator fill_rainbow( leds, NUM_LEDS, gHue, 7); } void rainbowWithGlitter() { // built-in FastLED rainbow, plus some random sparkly glitter rainbow(); addGlitter(80); } void addGlitter( fract8 chanceOfGlitter) { if( random8() < chanceOfGlitter) { leds[ random16(NUM_LEDS) ] += CRGB::White; } } void confetti() { // random colored speckles that blink in and fade smoothly fadeToBlackBy( leds, NUM_LEDS, 10); int pos = random16(NUM_LEDS); leds[pos] += CHSV( gHue + random8(64), 200, 255); } void sinelon() { // a colored dot sweeping back and forth, with fading trails fadeToBlackBy( leds, NUM_LEDS, 20); int pos = beatsin16(13,0,NUM_LEDS); leds[pos] += CHSV( gHue, 255, 192); } void bpm() { // colored stripes pulsing at a defined Beats-Per-Minute (BPM) uint8_t BeatsPerMinute = 62; CRGBPalette16 palette = PartyColors_p; uint8_t beat = beatsin8( BeatsPerMinute, 64, 255); for( int i = 0; i < NUM_LEDS; i++) { //9948 leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10)); } } void juggle() { // eight colored dots, weaving in and out of sync with each other fadeToBlackBy( leds, NUM_LEDS, 20); byte dothue = 0; for( int i = 0; i < 8; i++) { leds[beatsin16(i+7,0,NUM_LEDS)] |= CHSV(dothue, 200, 255); dothue += 32; } //здесь может быть любое ваше действие } if(regim==4)//четвертый режим { for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(0,255,0); FastLED.show(); // используйте структуру RemoteXY для передачи данных delay(1); //здесь может быть любое ваше действие } } }вот блин, только заметил, что код не до конца скопировался(
попытался убрирать и добавлять скобки, ошибка остаётся(
попытался убрирать и добавлять скобки, ошибка остаётся(
а, читать лог ты пытался?
как думаешь, что может значить например это сообщение об ошибке?
error:'rainbow'was not declaredinthisscopeон так о всех VOID пишет, немного с другим кодом была та же ошибка, оказалось только одно лишняя скобка, а здесь я не знаю в чём причина, вот и прошу помочь мне
он так о всех VOID пишет, немного с другим кодом была та же ошибка, оказалось только одно лишняя скобка, а здесь я не знаю в чём причина, вот и прошу помочь мне
ты будешь продолжать пререкаться или переменные объявлять?
а можно немного поподробнее, какие именно переменные я не так объявил?
а можно немного поподробнее, какие именно переменные я не так объявил?
ты слепой?
12sketch_aug27a:84: error:'rainbow'was not declaredinthisscope18sketch_aug27a:84: error:'rainbowWithGlitter'was not declaredinthisscope24sketch_aug27a:84: error:'confetti'was not declaredinthisscope30sketch_aug27a:84: error:'sinelon'was not declaredinthisscope36sketch_aug27a:84: error:'juggle'was not declaredinthisscope42sketch_aug27a:84: error:'bpm'was not declaredinthisscope50sketch_aug27a:169: error:'nextPattern'was not declaredinthisscopeда это я вижу, но так и не понял почему он выдаёт ошибку
вот брал отсюда все void
#include "FastLED.h" FASTLED_USING_NAMESPACE // FastLED "100-lines-of-code" demo reel, showing just a few // of the kinds of animation patterns you can quickly and easily // compose using FastLED. // // This example also shows one easy way to define multiple // animations patterns and have them automatically rotate. // // -Mark Kriegsman, December 2014 #if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000) #warning "Requires FastLED 3.1 or later; check github for latest code." #endif #define DATA_PIN 3 //#define CLK_PIN 4 #define LED_TYPE WS2811 #define COLOR_ORDER GRB #define NUM_LEDS 64 CRGB leds[NUM_LEDS]; #define BRIGHTNESS 96 #define FRAMES_PER_SECOND 120 void setup() { delay(3000); // 3 second delay for recovery // tell FastLED about the LED strip configuration FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); //FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); // set master brightness control FastLED.setBrightness(BRIGHTNESS); } // List of patterns to cycle through. Each is defined as a separate function below. typedef void (*SimplePatternList[])(); SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm }; uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current uint8_t gHue = 0; // rotating "base color" used by many of the patterns void loop() { // Call the current pattern function once, updating the 'leds' array gPatterns[gCurrentPatternNumber](); // send the 'leds' array out to the actual LED strip FastLED.show(); // insert a delay to keep the framerate modest FastLED.delay(1000/FRAMES_PER_SECOND); // do some periodic updates EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically } #define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0])) void nextPattern() { // add one to the current pattern number, and wrap around at the end gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns); } void rainbow() { // FastLED's built-in rainbow generator fill_rainbow( leds, NUM_LEDS, gHue, 7); } void rainbowWithGlitter() { // built-in FastLED rainbow, plus some random sparkly glitter rainbow(); addGlitter(80); } void addGlitter( fract8 chanceOfGlitter) { if( random8() < chanceOfGlitter) { leds[ random16(NUM_LEDS) ] += CRGB::White; } } void confetti() { // random colored speckles that blink in and fade smoothly fadeToBlackBy( leds, NUM_LEDS, 10); int pos = random16(NUM_LEDS); leds[pos] += CHSV( gHue + random8(64), 200, 255); } void sinelon() { // a colored dot sweeping back and forth, with fading trails fadeToBlackBy( leds, NUM_LEDS, 20); int pos = beatsin16(13,0,NUM_LEDS); leds[pos] += CHSV( gHue, 255, 192); } void bpm() { // colored stripes pulsing at a defined Beats-Per-Minute (BPM) uint8_t BeatsPerMinute = 62; CRGBPalette16 palette = PartyColors_p; uint8_t beat = beatsin8( BeatsPerMinute, 64, 255); for( int i = 0; i < NUM_LEDS; i++) { //9948 leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10)); } } void juggle() { // eight colored dots, weaving in and out of sync with each other fadeToBlackBy( leds, NUM_LEDS, 20); byte dothue = 0; for( int i = 0; i < 8; i++) { leds[beatsin16(i+7,0,NUM_LEDS)] |= CHSV(dothue, 200, 255); dothue += 32; } }попытался всё перенести, но компилятор ругается, а я не знаю, что сделать, чтобы исправить, да вы мне сказали, что нужно посмотреть на эти ошибки, но я всё перепроверил, и void, и скобки вроде везде подходят, поэтому я сейчас без понятия, что делать
Присвоение значения переменной без ее декларации вызовет следующее сообщение: error: pin was not declared in this scope".
так, и где мне нужно задекларировать все void ?
и как сделать эти переменные глобальными?
блин, что ты так бомбишь, я только разбираюсь в этом
блин, что ты так бомбишь, я только разбираюсь в этом
ну, и с чего ты начал?
вместо того, что бы самому написать простой ксетч и помигать двумя светодиодами, например одним два раза при включении, а вторым при нажатии кнопки 3 раза. ты насобирал непонятного тебе и собрался лететь в космос, но незадача - грёбаные скобки и в упор нечитаемый лог.
имеется ввиду, void и т.д.
светодиодами я уже наигрался
светодиодами я уже наигрался
ок. давай скетч
помигать двумя светодиодами, например одним два раза при включении, а вторым при нажатии кнопки 3 раза.
и поймём, игрался ты или учился.
просто делаю проект, всё спаял, склеил, всё работает, захотел добавить переливающийся режим, и вот до чего дошло
просто делаю проект, всё спаял, склеил, всё работает, захотел добавить переливающийся режим, и вот до чего дошло
дошло до того, что с аппаратной частью ты справился, а с программированием - дуб.
пиши скетч - поймёшь сразу, где ты тупишь.
90
Несколько библиотек найдено для "RemoteXY.h"
91
Используется: C:\Users\Pavel\Documents\Arduino\libraries\RemoteXY
92
Не используется: C:\Program Files (x86)\Arduino\libraries\RemoteXY
93
exit status 1
RemoteXY.h
RemoteXY.h - это и есть главная ошибка :-) Сырой проект с кучей ошибок.
Для того чтобы разобраться в их косяках надо понимать как все работает, а поймешь сам напишешь хороший код.
Клапауций 232 правильно тебе сказал, начинай с простого, с чужим говонокодом еще успеешь намучаться.