Boa noite, sou iniciante em arduino,  gostaria da ajuda de vocês para um projeto que estou fazendo. É o seguinte.

Pretendo fazer um interruptor touch com Leds para indicação da cor que a lâmpada está (ou fita de led no caso). Por enquanto, estou só tentando passar as cores que a fita de Led está no momento para um Led NeoPixel(WS2812b) usando a API REST. Tenho 2 Wemos D1 mini, um deles está instalado a firmware ESPURNA e nela tenho a api REST eu faço uma solicitação (GET) para este por outro Wemos d1 mini. Eu consigo retornar as cores que estão em exibição no momento pela fita de led em valores RGB (0 a 255 para cada cor separados por virgula) usando o comando "http.getString();" e guardando em uma variável tipo "String" de nome "payload". Só que estou tentando de alguma forma passar esses valores para uma função "pixels.setPixelColor(i, payload);", o retorno é "no matching function for call to 'Adafruit_NeoPixel::setPixelColor(int&, String&)" credito que porque tenho que inserir somente valores inteiros e a String guarda valores como Caracteres. Agradeço desde já.

Exibições: 193

Anexos

Responder esta

Respostas a este tópico

Bom dia FD.

1. Encontrei um erro no sketch que vc postou, a variável  "delayval"  usada em " delay(delayval); ", não foi criada.

2. A função  "pixels.setPixelColor(i, payload); "  pede na variável; "payload" o formato "unsigned long",

e vai de 0 até   0xFFFFFF  (16777215).. e cada byte é de uma cor.

Se a sua variável payload for um valor mas estiver no formato String, tente fazer assim:

"pixels.setPixelColor(i, (uint32_t)payload);

Depois dê um retorno contando o resultado.

RV

Boa tarde mineirin RV.

A IDE retornou isso quando tentei compilar.

"invalid cast from type 'String' to type 'uint32_t {aka unsigned int}'".

FD,

faça o seguinte teste:

comente a linha  // pixels.setPixelColor(i, (uint32_t)payload)   para não dar erro,

e antes do "delay(5000);"  imprima o payload, "println(payload);",

e post aqui o que foi impresso.

RV

Boa noite mineirin RV.

Desculpa a demora em responder mais tive que resolver alguns questões.

A porta serial retorna o seguinte.

Iniciando.............Conectado!SSID: conect-2018
18:18:06.085 -> IP: 192.168.1.19
0,21,255

Boa noite FD,

testa esta modificação que fiz no seu code e depois dá um retorno pra gente.

RV

Anexos

Ok assim que puder testar eu dou um retorno pois não tô na minha casa no momento, mais se não for pedir muito eu queria enteder um pouco dessa função "transforma" quer voce criou.obrigado.

Bom dia FD,

unsigned long transforma()   

nome da função, ela retorna um valor de tamanho unsigned long (4 bytes)

unsigned long numero = 0; 

Cria uma variável temporária unsigned long (4 bytes)


for (int i = 0; i < 3; i++)            ---- > >  Executa 3 vezes 
{
   int posicao = payload.indexOf(",");

   cria uma variável int e guarda nela a posição da primeira virgula

   Ex:   payload =  221,36,255   
   1a passada string = 221,36,255  a virgula está na posição 3

 

   numero = numero <   <  8;

   desloca o valor em numero 8 bits para esquerda 

   Ex: 1a passada 00, 2a passada hex DD, 3a passada hex DD24


   numero = numero + (payload.substring(0, posicao)).toInt();

   soma o valor atual com um valor separado da String inciando pelo

   valor 0 até a  posição lida anteriormente, transformado em numero inteiro.

    Ex: 1a passada hex DD, 2a passada hex DD24, 3a passada hex DD24FF


    payload = payload.substring(posicao + 1, 11);

    retira o primeiro byte da string

    1a passada String = 36,255   

    2a passada String = 255 

    3a passada String = 0    
}
return numero;

  retorna o numero calculado  --->  >   14492927
}

Boa tarde mineirin RV.

Muito obrigado, acabei de testar o sketch e funcionou perfeitamente. Agora vou fazer com que o botão touch ligue e delisgue a fita. Agradeço a atenção.

Boa tarde FD,

você postou inicialmente o sketch que controla os LEDs,

mas como disse que são 2 Wemos D1 mini, se importaria de anexar o

sketch do outro Wemos D1?

poderá servir para os amigos aqui do LdG.

RV

Boa noite mineirin RV.
A firmware que está no outro wemos D1 mini é a Espurna. E eu configurei ela para agir como uma luz RGB e usei resistores e transistores para controlar uma fita de led RGB. Ela tem suporte a Rest api ( que eu tô tentando entender mais) mqtt, home assistent, Alexa e outros serviços de automação. Gostei muito dela porque tem uma interface web que me agradou e é fácil e rápido de configurar. Segue o link abaixo para quem se interessar:

https://github.com/xoseperez/espurna

Bom dia FD,

enviei pra você um convite.

RV

Bom dia mineirin RV.

Convite aceito. Obrigado.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço