2017-01-31 6 views
-3

Я изучаю Arduino. Теперь я хочу изменить цвет фона.Arduino byte to HEX (12Bit)

Я использую плату Uno и экранный экран Sparkfun Color. Я также использую библиотеку SparkFunColorLCDShield.

Самый простой способ изменения цвета является сделать lcd.clean(HEXCODE); Пример для белого фона: lcd.clean(0xFFF); (12BIT из 0xFFFFFF) Он также работает с lcd.clean(16777215);

The 16777215 десятичное число 0xFFFFFF. Теперь мне нужен метод, который дает мне десятичное число любого номера HEX.

Другие примеры:

  • 00FFFFF -> 1048575
  • 000FFFF -> 65535
+0

Непонятно, что вы спрашиваете, пожалуйста, уточните свой вопрос. Специально определите «HEX этого». И как вы могли бы сохранить «FFFFFF» в байте (!) ?? –

+3

Начнем с того, что в байте нет возможности хранить что-либо, что может быть представлено «FFFFFF», так что это противоречиво. Кроме того, «FFFFFF» уже выглядит шестнадцатеричным, поэтому непонятно, что вы подразумеваете, переведя его в шестнадцатеричное. Также неясно, что должно быть 12 бит. Наконец, я понятия не имею, как вопрос в вопросе связан с вопросом, так как все, что он делает, это считывать последовательные данные, которые не упоминаются нигде в вопросе. – Dolda2000

+0

Я бы предположил, что FFFFFF означает RGB-представление R = 0xFF, G = 0xFF, B = 0xFF? Вероятно, это то, что нужно уточнить, тем более, что это не стандартизировано - есть RGB и RBG. – Lundin

ответ

1

После долгих угадывание и чтение here:

Может быть, вы хотите:

#include <stdlib.h> 
#include <stdio.h> 


int Convert24bitColorStringTo12BitColor(const char *colorcode24) 
{ 
    long color24 = strtol(colorcode24, NULL, 16); 
    long color12 = ((color24 & 0xf0) >> 4) | ((color24 & 0xf000) >> 8) | ((color24 & 0xf00000) >> 12); 
    return color12; 
} 

int main() 
{ 
    printf("%x\n", Convert24bitColorStringTo12BitColor("abcdef")); 
    printf("%x\n", Convert24bitColorStringTo12BitColor("ffff")); 
} 

Отпечатано:

ace 
ff 
+0

+1, предлагаемое редактирование: 'long color24', потому что' int' имеет '16' бит на * Arduino *, я просто понял, что совершил эту ошибку. –

+0

@PatrickTrentin, вы, вероятно, правы, исправлены, спасибо –