site ofc > https://dsw-wheel.rf.gd/
discord > https://discord.gg/8cFE527m9p
A biblioteca oficial para se fazer um Painel personalizado para jogos de corrida com software DSW painel pro obtido em > https://dsw-wheel.rf.gd/baxada.html?i=1
baixe o arquivo ZIP e coloque sua ide arduino de preferência 1.8.x na nova atualização está funcionando corretamente no IDE V2.x.x
nossa biblioteca é oficial no gerenciador de bibliotecas do IDE veja
pode instalar por aí normal!
Espere... espere... detenham a contagem ! caso você não conseguiu conectar a placa no sofware novo ,no "void setup" coloque o comando "Serial.begin(115200);"
ela é simples apenas 3 funções
".vai()" deve ser chamada só uma vez para iniciar ela
".atualizar()" vai procurar por atualizações lá no aplicativo
".puxa( valor de 0 a 19)" para você puxar os valores dos slots configurados no aplicativo mas lembre que no arduino slots começam de 0 a 19 e no software de 1 a 20 ou seja se você configurou o slot 14 aqui no arduíno você vai ter que colocar o número 13 para puxar ele
veja um exemplo para fazer um shift light
#include <dswpainelpro.h> DSWPainelPro dsw; void setup() { dsw.vai(); pinMode(13, OUTPUT); // Configura o pino como saída } void loop() { dsw.atualizar(); // Atualiza os valores Com o que tiver disponível // Obtém o valor do slot 0 e imprime String value = dsw.puxa(0); int intensity = value.toInt(); int libata = 0; if (intensity >= 1244){ libata = 255; }else{ libata = 0; } // Ajusta a intensidade do LED analogWrite(13, libata); delay(1); // Aguarde um tanto }
você deverá colocar o slot 1 para ser RPM e isso vai funcionar quando o giro passar 1244 ele vai acender aquele LED que fica na porta 13 do arduino
cmd < um sistema de envio de comandos foi adicionado percebemos a gente precisava mudar variaveis toda hora e ficar enviando o código novamente então desenvolvemos esse sistema bem simples novas funções foram adicionadas observe. OBS . Ainda é necessário chamar a função " dsw.atualizar(); " para que o sistema se atualize !
para iniciar o sistema de CMD é bem simples chame essa funçao no setup " dsw.cmd_vai(comandos, numComandos);" passando uma listagem de comandos o número de comandos existentes lembrando que obrigatoriamente todo o comando deve começar com uma " / " se não ele não vai funcionar!
para você poder puxar o valor de um comando atual você pode utilizar "dsw.cmd_puxada("/led")" como nesse exemplo passando o nome do comando que ele vai retornar um float
outro problema surgiu como vamos saber quando o comando for validado ? então fizemos um sistema de chamadas defina "dsw.cmd_chamarisco()" passando uma função que você vai criar no código que ela vai ser chamada toda vez que um comando for validado ! ela vai passar 2 variáveis uma de "comando" string e um int do "valor" o que você pode fazer para saber qual comando foi enviado observe o exemplo abaixo que também está nos exemplos da biblioteca
#include "dswpainelpro.h" DSWPainelPro dsw; // Função de callback que será chamada quando um comando for recebido void meuCallback(String command, int valuer) { /* essa disponibiliza de 2 variáveis uma do comando que foi validado e um valor inteiro do valor pode ver que logo abaixo a gente verificou se o comando é "/led" e depois foi dado outro exemplo de como usar o comando ""cmd_puxada"" que retorna um valor float do comando selecionado dentro dele por uma string Apenas para exemplificar mas como a gente já precisa do valor como inteiro a gente podia apenas usar ""valuer"" aqui no caso que foi definido com a variável de retorno de valor do callback >PLUS esse CMD nao necessita realmente do proprietário dentro do aplicativo o do próprio Arduino IDE ele já funcionará */ if (command == "/led"){ analogWrite(13, (int)dsw.cmd_puxada("/led")); /* aproveitando o embalo vamos apresentar a função ""slynky"" que serve para você fazer um retorno personalizado para o prompt de comando você pode enviar qualquer string de apenas strings */ dsw.slynky(" o valor do LED foi atualizado com sucesso!! > exemplo de uso da função slynky !!<"); } } void setup() { pinMode(13, OUTPUT); // Configura o pino 13 como saída (Esse pino Além de ser o pino digital 13 também é conectado a um LED que tem a letra "L" na placa ) /////////////////////////////////////////////////////////////////////////////////////////////////////////////// String comandos[] = {"/start", "/stop", "/reset","/led"}; int numComandos = 4; // inicia a funcionalidade do prompt de comando ! // definindo os comandos numa lista e o número de comandos dsw.cmd_vai(comandos, numComandos); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Registra a função de callback // esse "callback" é uma função que você pode declarar que quando um comando for validado ou seja o software // enviou um comando que existe ele irá chamar uma função se você quiser claro você pode ver abaixo que foi definido uma função //""meuCallback"" que nesse código foi criado no início dsw.cmd_chamarisco(meuCallback); } void loop() { // atualiza os valores mais recentes enviados do Software dsw.atualizar(); }
outro problema surgiu e nós resolvemos após enviar um comando processaria vai tudo funcionar até você desligar placa ! Quando ligar novamente todas as configurações feitas vão ser perdidas então como resolver esse problema adicionamos um sistema de manejamento de EEPROM !
Observe é fácil de utilizar
basta iniciar dsw_eeprom "dsw_eeprom eepromManager(variaveis, tipos, 2);" passando uma listagem para ele das variáveis uma listagem dos tipos e o número de variáveis que você colocou a listagem de tipos na mesma ordem da listagem das variáveis você vai colocar uma string "i" ou "f" para dizer a tipologia inteiro ou float depois tem 2 funções que vão fazer o sistema salvar ou carregar ao salvar e carregar ele faz o salvamento e o carregamento de todas as variáveis ao mesmo tempo
salvar > eepromManager.eeprom_salvar();
carregar > eepromManager.eeprom_puxar();
veja um pequeno exemplo completo!
#include "dswpainelpro.h" // Variáveis globais para serem armazenadas na EEPROM ( as variáveis que vamos utilizar no nosso exemplo ) int contador = 1234; // Exemplo de um inteiro float temperatura = 23.5; // Exemplo de um float void setup() { // Array de variáveis que serão salvas ( aqui vamos colocar o nome das variáveis que nós vamos querer trabalhar) void* variaveis[] = { &contador, &temperatura }; // Array com os tipos dessas variáveis ('i' para int, 'f' para float) | ( faça com respectividade ou seja a definição deve estar na mesma ordem que você definiu o nome das variáveis) char tipos[] = { 'i', 'f' }; // Instancia o objeto para manipular a EEPROM( agora basta chamar a biblioteca com os dados que nós temos definindo nessa ordem a lista de variáveis lista de tipos e também coloque o valor da quantidade de variáveis que você definiu como pode observar nós temos 2 um número 2 foi colocado) dsw_eeprom eepromManager(variaveis, tipos, 2); //========================================================================================================================================= // Salva os valores na EEPROM eepromManager.eeprom_salvar(); // toda vez que ela for chamada ela vai pegar o valor das variáveis e salvar na eeprom mesmo que o Arduino for desligado os valores não são perdidos //========================================================================================================================================= // Puxa os valores da EEPROM para as variáveis eepromManager.eeprom_puxar(); // toda vez que acionada ela vai pegar aqueles valores que estão salvo na eeprom e redefinir eles nas variáveis respectivas, aquelas que foram definidas no início do código obvio //========================================================================================================================================= /* sugestão de uso< você pode usar em conjunto do CMD inclusive foi feito para isso no caso ! Ao receber um novo comando e processado utilize essa biblioteca para salvar os comandos após processar os comandos chame a função {.eeprom_salvar();} que ela vai fazer o salvamento e na função "setup" chame {.eeprom_puxar();} Que toda vez que o arduino religar ele vai puxar o valor das variáveis na última salvação! */ } void loop() { // Não é necessário fazer nada no loop para este exemplo }
essas foram as novas funcionalidades adicionais colocamos também mais exemplos você pode ir no menu de exemplos do seu arduínoIDE e verá vários exemplos utilizando o comando e a EEPROM ao mesmo tempo utilizando o SERVOS também !
obs > tem uma função que pode ser muito útil nos testes "dsw.slynky("oi");" slynky pode ser chamada junto a uma string ela vai fazer um log, se você estiver com "cmd" ou "serial view" do arduino IDE aberto na hora que ela for acionada poderá ser visto o que ela enviou!