Simulador de corrida de movimento 2D DIY
Componentes e suprimentos
![]() |
| × | 1 | |||
![]() |
| × | 2 |
Ferramentas e máquinas necessárias
![]() |
|
Aplicativos e serviços online
![]() |
|
Sobre este projeto
SimTools é um software de simulação de movimento genérico capaz de controlar várias interfaces de hardware, incluindo Arduino. Essa combinação é usada no projeto apresentado no vídeo. Parte do hardware consiste apenas no microcontrolador Arduino Nano e dois micro servo motores SG90 baratos. Precisamos apenas fazer o upload do código fornecido a seguir.
Os dados do jogo necessários com a ajuda do software SimTools são transmitidos através da porta serial para o Arduino. Em seguida, o Arduino ativa servo motores que movem a plataforma de simulação de acordo. Esta é uma pequena escala de um simulador de dois eixos. Para fazer um simulador real, você precisa adicionar drivers de motor e servo motores grandes.

Existem muitos exemplos de simuladores DIY, bem como desenhos de construção e dicas na página "https://www.xsimulator.net/". O procedimento de configuração do SimTools é descrito no vídeo, mas você também pode baixar o manual do usuário em PDF em:https://simtools.us/wp-content/uploads/2019/06/SimToolsUserManual-v2.4.pdf

O SimTools será executado no modo “Demo” até que uma licença válida seja registrada. O plug-in para Live for Speed está totalmente operacional para teste enquanto o SimTools está no modo de demonstração. (A demonstração do Live for Speed também funcionará para testar o SimTools.) Você pode encontrar mais informações e fazer o download do Live for Speed em https://www.lfs.net/downloads
Link para download do SimTools:
https://www.xsimulator.net/community/marketplace/motion-simulation-software-simtools.63/
Código
- Código
Código C / C ++
// ********************************************* ************************************************ // RC Model Servo // Código original de EAOROBBIE (Robert Lindsay) // Completamente mutilado por aarondc // Para uso gratuito do Sim Tool Motion Software // ******************** *************************************************** *********************** # include// # define DEBUG 1 // comente esta linha para remover debuggin Serial.print linesconst int kActuatorCount =2; // quantos atuadores estamos tratando // as letras ("nomes") enviadas das ferramentas do Sim para identificar cada atuador // NB:a ordem das letras aqui determina a ordem das constantes restantes kPins e kActuatorScaleconst char kActuatorName [kActuatorCount] ={'R', 'L'}; const int kPins [kActuatorCount] ={4, 5}; // pinos aos quais os atuadores estão conectadosconst int kActuatorScale [kActuatorCount] [2] ={{0, 179}, // Escala do atuador direito {179, 0} // Escala do atuador do lado esquerdo}; const char kEOL ='~'; // Fim da linha - o delimitador para nossos valores de acutador const int kMaxCharCount =3; // algum seguro ... Servo atuatorSet [kActuatorCount]; // nosso array de Actuatorsint atuatorPosition [kActuatorCount] ={90, 90}; // posições atuais do atuador, inicializadas com 90int currentActuator; // acompanha o Atuador atual sendo lido do portint serial valueCharCount =0; // quantos caracteres de valor lemos (deve ser menor que kMaxCharCount !! // configurar alguns estados para nossa máquina de estado // psReadActuator =próximo caractere da porta serial nos diz o atuador // psReadValue =próximos 3 caracteres da porta serial nos diz o valor TPortState {psReadActuator, psReadValue}; TPortState currentState =psReadActuator; void setup () {// anexar os atuadores aos pinos para (int i =0; i 0) .void serialEvent () {char tmpChar; int tmpValue; while (Serial.available ()) {// if estamos esperando por um nome de atuador, pegue-o aqui if (currentState ==psReadActuator) {tmpChar =Serial.read (); // procure nosso atuador na matriz de nomes de atuador que configuramos #ifdef DEBUG Serial.print ("ler em"); Serial.println (tmpChar); #endif for (int i =0; i 9)) tmpValue =0; atuatorPosition [currentActuator] =atuatorPosition [currentActuator] * 10 + tmpValue; valueCharCount ++; } else break; } // se lemos o delimitador de valor, atualize o Atuador e comece a procurar o próximo nome do Atuador if (tmpValue ==kEOL || valueCharCount ==kMaxCharCount) {#ifdef DEBUG Serial.print ("ler em"); Serial.println (atuatorPosition [currentActuator]); #endif // dimensionar a nova posição para que o valor esteja entre 0 e 179 atuatorPosition [currentActuator] =map (atuatorPosition [currentActuator], 0, 255, kActuatorScale [currentActuator] [0], kActuatorScale [currentActuator] [1]); # ifdef DEBUG Serial.print ("dimensionado para"); Serial.println (atuatorPosition [currentActuator]); #endif updateActuator (currentActuator); currentState =psReadActuator; }}}} // escreve a posição atual do atuador no atuador void updateActuator (int thisActuator) {atuatorSet [thisActuator] .write (atuatorPosition [thisActuator]);}
Esquemas

Processo de manufatura
- Sistema de sensor de movimento infravermelho faça você mesmo para Raspberry Pi
- DIY LUMAZOID Arduino Music Visualiser
- Faça você mesmo voltímetro usando Arduino e Smartphone
- Faça você mesmo skate de realidade virtual
- Pistola de água com sensor de movimento
- Faça você mesmo Arduino RADIONICS Tratamento MMachine
- Ideia DIY com RFID
- DIY 3 eixos CNC VMC
- Faça você mesmo Arduino + GY-906 Termômetro infravermelho
- Pedais de leme DIY para simulador de vôo