Массив данных. Не считывается из FOR.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 Не могу понять - где затыка... Область видимости ? Вложенность подпрограмм ?

Вот весь текст:

#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 ) ;   
}
//------------------------------------------------------------------------

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 Строки 53...58 - работают.

А в этом варианте - нет, вааще не работает, и в монитор ничё не выводит. 

//-----------------------------------------------------------------------
 void loop()
{  
  for ( int n = 0 ; n > 215 ; n ++ )
  {
    SetColor() ;
    NColor = n ;    
    delay( Pause ) ;
  }
}
//------------------------------------------------------------------------

 И так - тоже самое.....

//-----------------------------------------------------------------------
 void loop()
{  
  for ( NColor = 0 ; NColor > 215 ; NColor ++ )
  {
    SetColor() ;
    delay( Pause ) ;
  }
}
//------------------------------------------------------------------------

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 По номеру цвета 0...215 - через div и mod можно вытянуть значения каждого из трёх каналов с дискретизацией для ШИМ.

 Это - 0   51   102   153   204   255. Ибо цвет кодируется 3-ёх разрядным 6-тиричным числом.....

Но нужен массив - т.к. перебор цвета хочется подогнать перестановкой элементов массива под логику "каждый охотник желает знать где сидит фазан", или - на крайняк - "как однажды Жак звонарь городской сломал фонарь" :) .

Подскажите, пожста, - из какой области мои ошибки ? Спасибо.

step962
Offline
Зарегистрирован: 23.05.2011

SU-27-16 пишет:

 Строки 53...58 - работают.

А в этом варианте - нет, вааще не работает, и в монитор ничё не выводит. 

//-----------------------------------------------------------------------
 void loop()
{  
  for ( int n = 0 ; n > 215 ; n ++ )
  {
    SetColor() ;
    NColor = n ;    
    delay( Pause ) ;
  }
}
//------------------------------------------------------------------------

 И так - тоже самое.....

//-----------------------------------------------------------------------
 void loop()
{  
  for ( NColor = 0 ; NColor > 215 ; NColor ++ )
  {
    SetColor() ;
    delay( Pause ) ;
  }
}
//------------------------------------------------------------------------

 

Попробуйте строку

for ( int n = 0 ; n > 215 ; n ++ )

переписать так:

for ( int n = 0 ; n < 215 ; n ++ )
 

И - бегом читать вот это.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 Ёёёёёёёёёёёёёёёёёёёёёёёёёёё !!!!!!!! :( Ошибка - из области корявых пальцев..... И - спать надо ночью....

Спасибо !