Массив данных. Не считывается из FOR.
- Войдите на сайт для отправки комментариев
Пт, 21/09/2012 - 05:04
Не могу понять - где затыка... Область видимости ? Вложенность подпрограмм ?
Вот весь текст:
#define Pause 1500 #define LedR 6 #define LedG 5 #define LedB 3 byte ValueR = 0 ; byte ValueG = 0 ; int ValueB = 0 ; byte NColor = 0 ; int Color[ 216 ] = { 0x000 , 0x001 , 0x002 , 0x003 , 0x004 , 0x005 , 0x008 , 0x009 , 0x00A , 0x00B , 0x00C , 0x00D , 0x010 , 0x011 , 0x012 , 0x013 , 0x014 , 0x015 , 0x018 , 0x019 , 0x01A , 0x01B , 0x01C , 0x01D , 0x020 , 0x021 , 0x022 , 0x023 , 0x024 , 0x025 , 0x028 , 0x029 , 0x02A , 0x02B , 0x02C , 0x02D , 0x040 , 0x041 , 0x042 , 0x043 , 0x044 , 0x045 , 0x048 , 0x049 , 0x04A , 0x04B , 0x04C , 0x04D , 0x050 , 0x051 , 0x052 , 0x053 , 0x054 , 0x055 , 0x058 , 0x059 , 0x05A , 0x05B , 0x05C , 0x05D , 0x060 , 0x061 , 0x062 , 0x063 , 0x064 , 0x065 , 0x068 , 0x069 , 0x06A , 0x06B , 0x06C , 0x06D , 0x080 , 0x081 , 0x082 , 0x083 , 0x084 , 0x085 , 0x088 , 0x089 , 0x08A , 0x08B , 0x08C , 0x08D , 0x090 , 0x091 , 0x092 , 0x093 , 0x094 , 0x095 , 0x098 , 0x099 , 0x09A , 0x09B , 0x09C , 0x09D , 0x0A0 , 0x0A1 , 0x0A2 , 0x0A3 , 0x0A4 , 0x0A5 , 0x0A8 , 0x0A9 , 0x0AA , 0x0AB , 0x0AC , 0x0AD , 0x0C0 , 0x0C1 , 0x0C2 , 0x0C3 , 0x0C4 , 0x0C5 , 0x0C8 , 0x0C9 , 0x0CA , 0x0CB , 0x0CC , 0x0CD , 0x0D0 , 0x0D1 , 0x0D2 , 0x0D3 , 0x0D4 , 0x0D5 , 0x0D8 , 0x0D9 , 0x0DA , 0x0DB , 0x0DC , 0x0DD , 0x0E0 , 0x0E1 , 0x0E2 , 0x0E3 , 0x0E4 , 0x0E5 , 0x0E8 , 0x0E9 , 0x0EA , 0x0EB , 0x0EC , 0x0ED , 0x100 , 0x101 , 0x102 , 0x103 , 0x104 , 0x105 , 0x108 , 0x109 , 0x10A , 0x10B , 0x10C , 0x10D , 0x110 , 0x111 , 0x112 , 0x113 , 0x114 , 0x115 , 0x118 , 0x119 , 0x11A , 0x11B , 0x11C , 0x11D , 0x120 , 0x121 , 0x122 , 0x123 , 0x124 , 0x125 , 0x128 , 0x129 , 0x12A , 0x12B , 0x12C , 0x12D , 0x140 , 0x141 , 0x142 , 0x143 , 0x144 , 0x145 , 0x148 , 0x149 , 0x14A , 0x14B , 0x14C , 0x14D , 0x150 , 0x151 , 0x152 , 0x153 , 0x154 , 0x155 , 0x158 , 0x159 , 0x15A , 0x15B , 0x15C , 0x15D , 0x160 , 0x161 , 0x162 , 0x163 , 0x164 , 0x165 , 0x168 , 0x169 , 0x16A , 0x16B , 0x16C , 0x16D } ; //----------------------------------------------------------------------- void setup() { pinMode( LedR , OUTPUT ) ; pinMode( LedG , OUTPUT ) ; pinMode( LedB , OUTPUT ) ; } //----------------------------------------------------------------------- void loop() { SetColor() ; NColor ++ ; delay( Pause ) ; } //------------------------------------------------------------------------ void SetColor() { int TempColor ; TempColor = Color[ NColor ] ; ValueR = TempColor ; ValueR = ValueR & 7 ; ValueR = ValueR * 51 ; ValueG = TempColor ; ValueG = ValueG >> 3 ; ValueG = ValueG & 7 ; ValueG = ValueG * 51 ; ValueB = TempColor ; ValueB = ValueB >> 6 ; ValueB = ValueB & 7 ; ValueB = ValueB * 51 ; analogWrite( LedR , ValueR ) ; analogWrite( LedG , ValueG ) ; analogWrite( LedB , ValueB ) ; } //------------------------------------------------------------------------
Строки 53...58 - работают.
А в этом варианте - нет, вааще не работает, и в монитор ничё не выводит.
И так - тоже самое.....
По номеру цвета 0...215 - через div и mod можно вытянуть значения каждого из трёх каналов с дискретизацией для ШИМ.
Это - 0 51 102 153 204 255. Ибо цвет кодируется 3-ёх разрядным 6-тиричным числом.....
Но нужен массив - т.к. перебор цвета хочется подогнать перестановкой элементов массива под логику "каждый охотник желает знать где сидит фазан", или - на крайняк - "как однажды Жак звонарь городской сломал фонарь" :) .
Подскажите, пожста, - из какой области мои ошибки ? Спасибо.
Строки 53...58 - работают.
А в этом варианте - нет, вааще не работает, и в монитор ничё не выводит.
И так - тоже самое.....
Попробуйте строку
for ( int n = 0 ; n > 215 ; n ++ )
переписать так:
for ( int n = 0 ; n < 215 ; n ++ )
И - бегом читать вот это.
Ёёёёёёёёёёёёёёёёёёёёёёёёёёё !!!!!!!! :( Ошибка - из области корявых пальцев..... И - спать надо ночью....
Спасибо !