Karting électrique de Arduino (6 / 6 étapes)

Étape 6: Photos supplémentaires + code

La gauche et la droite contrôlent les zones qui abritent l’ensemble de l’électronique,- et le support de batterie. Oui, je sais que c’est salissant, mais étonnamment il n’y a pas de courts-circuits accidentels.

Merci ! N’hésitez pas à poser toutes les questions. Si vous voulez des photos ou des schémas plus précis je peux faire ceux aussi bien. Le fichier d’ino est associé dans le cas où le code ici ne s’affiche pas correctement.

Voici le code. C’est vraiment, vraiment spécifique à mon build, mais des extraits peut-être utile à vous les gars. Vous pouvez l’utiliser autant que vous voulez, mais donnez crédit si vous voulez distribuer.

 #include <SimpleTimer.h> // http://playground.arduino.cc/Code/SimpleTimer #include <FancyLED.h> // http://playground.arduino.cc/Code/SimpleTimer #include <Servo.h> // default arduino servo library #include <UTFT.h> // http://playground.arduino.cc/Code/SimpleTimer > extern uint8_t BigFont[]; const int throttlePin = A11; Servo esc; const int escPWRSwitch=16; const int escPWR=A13; volatile byte revolutions; unsigned int rpm; unsigned long timeold; float voltage; const int voltagePin=A9; float current; const int currentPin=A10; UTFT myGLCD(ITDB32S,38,39,40,41); long previousMillis = 0; long interval = 300; SimpleTimer timer; FancyLED left_1 = FancyLED(8, HIGH); FancyLED left_2 = FancyLED(6, HIGH); FancyLED right_1 = FancyLED(11, HIGH); FancyLED right_2 = FancyLED(7, HIGH); FancyLED brake_1 = FancyLED(3, HIGH); FancyLED brake_2 = FancyLED(10, HIGH); FancyLED brake_ind = FancyLED(44, HIGH); const int joystick = A14; int gear = 0; int throttle = 34; long indicatorInterval; int leftIndicatorF; int rightIndicatorF; // R - 11,7 (L - 8,6) int indicatorState; void setup() { esc.attach(45); pinMode(escPWR, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT); pinMode(A4, OUTPUT); pinMode(A5, OUTPUT); pinMode(A6, OUTPUT); pinMode(A12, OUTPUT);</p><p> digitalWrite(escPWR, HIGH); myGLCD.InitLCD(PORTRAIT); myGLCD.setFont(BigFont); left_1.turnOff(); left_2.turnOff(); right_1.turnOff(); right_2.turnOff(); leftIndicatorF = timer.setInterval(450, leftIndicatorFunct); rightIndicatorF = timer.setInterval(450, rightIndicatorFunct); timer.disable(rightIndicatorF); timer.disable(leftIndicatorF);</p><p> myGLCD.clrScr(); myGLCD.fillScr(255, 0, 0); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); ///// If override button is held during startup, enter "basic mode" - only throttle and display are functional int basic_test = digitalRead(14); if (basic_test == HIGH) { myGLCD.print("BASIC MODE", CENTER, CENTER); pinMode(13, OUTPUT);</p><p> digitalWrite(13, HIGH); basic(); } } void loop() { ////////// current = ((analogRead(currentPin))); ///////// voltage = (analogRead(voltagePin)) * (0.02441) ; ////////// if (digitalRead(escPWRSwitch) == HIGH) { digitalWrite(escPWR, LOW); } else { digitalWrite(escPWR, HIGH); } ///////////</p><p>throttle = analogRead(throttlePin); throttle = map(throttle, 0, 1023, 0, 179);</p><p>if (gear > 0) { if (throttle > 35) { throttle = map(throttle, 0, 179, 35, ((140 / 8) * gear)+40); } } else if (gear == 0) { throttle = 34; } else if (gear == -1) { throttle = 34;</p><p>} else if (gear == -2) { throttle = 0; }</p><p>if (analogRead(A8) > 1000) { esc.write(throttle); } else { esc.write(34); }</p><p>////////////// unsigned long currentMillis = millis(); int joystick_val = analogRead(joystick);</p><p> if(currentMillis - previousMillis > interval) { if (joystick_val < 1000) { if (830 < joystick_val) { //up if (gear < 8 && gear > 0) { gear++; } else if (gear != 8) { gear = 1; }</p><p>} else if (680 < joystick_val) { //down if (gear > 1) { gear--; } } else if (350 < joystick_val) { //left (reverse) gear = -1; }</p><p>else if (70 < joystick_val) { //right if (gear == 0) { gear = -2; } else { gear = 0; } }} } ////////////// if (gear == 1) { digitalWrite(A3, LOW); digitalWrite(A2, HIGH); digitalWrite(A6, LOW); digitalWrite(A4, HIGH); digitalWrite(A1, LOW); digitalWrite(A12, LOW); digitalWrite(A5, LOW);</p><p>} else if (gear == 2) { digitalWrite(A3, HIGH); digitalWrite(A2, LOW); digitalWrite(A6, HIGH); digitalWrite(A4, HIGH); digitalWrite(A1, HIGH); digitalWrite(A12, LOW); digitalWrite(A5, HIGH);</p><p>} else if (gear == 3) { digitalWrite(A3, HIGH); digitalWrite(A2, LOW); digitalWrite(A6, HIGH); digitalWrite(A4, LOW); digitalWrite(A1, HIGH); digitalWrite(A12, HIGH); digitalWrite(A5, HIGH);</p><p>} else if (gear == 4) { digitalWrite(A3, LOW); digitalWrite(A2, HIGH); digitalWrite(A6, HIGH); digitalWrite(A4, LOW); digitalWrite(A1, LOW); digitalWrite(A12, HIGH); digitalWrite(A5, HIGH);</p><p>} else if (gear == 5) { digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A6, HIGH); digitalWrite(A4, LOW); digitalWrite(A1, HIGH); digitalWrite(A12, HIGH); digitalWrite(A5, LOW);</p><p>} else if (gear == 6) { digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A6, HIGH); digitalWrite(A4, HIGH); digitalWrite(A1, HIGH); digitalWrite(A12, HIGH); digitalWrite(A5, LOW);</p><p>} else if (gear == 7) { digitalWrite(A3, HIGH); digitalWrite(A2, LOW); digitalWrite(A6, LOW); digitalWrite(A4, LOW); digitalWrite(A1, LOW); digitalWrite(A12, HIGH); digitalWrite(A5, HIGH);</p><p>} else if (gear == 8) { digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A6, HIGH); digitalWrite(A4, HIGH); digitalWrite(A1, HIGH); digitalWrite(A12, HIGH); digitalWrite(A5, HIGH);</p><p>} else if (gear == 0) { digitalWrite(A3, LOW); digitalWrite(A2, LOW); digitalWrite(A6, HIGH); digitalWrite(A4, HIGH); digitalWrite(A1, LOW); digitalWrite(A12, HIGH); digitalWrite(A5, LOW);</p><p>} else if (gear == -2) { digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A6, HIGH); digitalWrite(A4, HIGH); digitalWrite(A1, LOW); digitalWrite(A12, LOW); digitalWrite(A5, HIGH);</p><p>} else if (gear == -1) { digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A6, HIGH); digitalWrite(A4, HIGH); digitalWrite(A1, LOW); digitalWrite(A12, HIGH); digitalWrite(A5, HIGH);</p><p>}</p><p>////////////// if (analogRead(A15) > 1000) { digitalWrite(12, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(9, HIGH); } else if (analogRead(A15) < 10) { digitalWrite(12, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(9, LOW); } else { analogWrite(12, 128); analogWrite(4, 128); analogWrite(5, 128); analogWrite(9, 128); }</p><p>////////////// if (digitalRead(15) == HIGH) { timer.enable(rightIndicatorF); timer.enable(leftIndicatorF); indicatorState = 1; } else if (timer.isEnabled(leftIndicatorF) && timer.isEnabled(rightIndicatorF) && digitalRead(15) == LOW) { timer.disable(rightIndicatorF); timer.disable(leftIndicatorF); left_1.turnOff(); left_2.turnOff(); right_1.turnOff(); right_2.turnOff(); indicatorState = 0; } else if ((analogRead(A7) > 1000 || analogRead(A7) < 10) && indicatorInterval == 0) { indicatorInterval = millis(); }</p><p>if (millis() - indicatorInterval > 250 && indicatorInterval != 0) { if (analogRead(A7) > 990) { timer.toggle(leftIndicatorF); if (!timer.isEnabled(leftIndicatorF)) { left_1.turnOff(); left_2.turnOff(); indicatorState = 0; } else { indicatorState = 2; } timer.disable(rightIndicatorF); right_1.turnOff(); right_2.turnOff();</p><p>} else if (analogRead(A7) < 30) { timer.toggle(rightIndicatorF);</p><p> if (!timer.isEnabled(rightIndicatorF)) { right_1.turnOff(); right_2.turnOff(); indicatorState = 0;</p><p> } else { indicatorState = 3; } timer.disable(leftIndicatorF); left_1.turnOff(); left_2.turnOff();</p><p>} indicatorInterval = 0; } timer.run(); ////////////// if (throttle < 35 || digitalRead(16) == LOW || analogRead(A8) < 1000) { brake_1.turnOn(); brake_2.turnOn(); brake_ind.turnOn(); } else { brake_1.turnOff(); brake_2.turnOff(); brake_ind.turnOff();</p><p>} ////////////</p><p> if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; myGLCD.printNumF(voltage, 3, CENTER, 10); if (digitalRead(16) == HIGH) { myGLCD.print("ESC ON ", CENTER, 40); } else { myGLCD.print("ESC OFF", CENTER, 40); } if (analogRead(A8) > 1000) { myGLCD.print("ACTIVE", CENTER, 70); } else { myGLCD.print(" ", CENTER, 70); } if (analogRead(A15) > 1000) { myGLCD.print("HEADLIGHTS 100%", CENTER, 100); } else if (analogRead(A15) < 10) { myGLCD.print("HEADLIGHTS OFF ", CENTER, 100); } else { myGLCD.print("HEADLIGHTS 50% ", CENTER, 100); } ///////// if (indicatorState == 1) { myGLCD.print("HAZARDS", CENTER, 170); } else if (indicatorState == 2) { myGLCD.print("<------", CENTER, 170); } else if (indicatorState == 3) { myGLCD.print("------>", CENTER, 170); } else if (indicatorState == 0) { myGLCD.print(" ", CENTER, 170); } if (voltage < 18.5) { myGLCD.print("LV WARNING", CENTER, 200); } else { myGLCD.print(" ", CENTER, 200); } myGLCD.printNumI(throttle, CENTER, 140, 3); myGLCD.printNumI(gear, CENTER, 240, 3);</p><p> myGLCD.printNumF(current, 3, CENTER, 280); } //////////// }</p><p>void leftIndicatorFunct() { left_1.toggle(); left_2.toggle(); }</p><p>void rightIndicatorFunct() { right_1.toggle(); right_2.toggle(); }</p><p>void basic() { //////basic mode for testing purpose digitalWrite(escPWR, LOW);</p><p> while (true) { throttle = analogRead(throttlePin);</p><p>throttle = map(throttle, 0, 1023, 0, 179); myGLCD.printNumI(throttle, CENTER, 140, 3);</p><p>esc.write(throttle); } }</p> 

Articles Liés

Comment faire un Custom Karting électrique et le moteur DC sans balais

Comment faire un Custom Karting électrique et le moteur DC sans balais

ce Instructable détaille la conception et la fabrication de mon go-kart électrique. Toutefois, les principes et les méthodes que j'ai utilisé peuvent être appliqués aux véhicules similaires.Eli-Kart est issu un intérêt de la mine pour créer un simple
Kart électrique

Kart électrique

au cours de quelques années, j'ai construit ce kart électrique aller.  J'ai obtenu le cadre sur Craigslist et a passé une longue période de restauration.  La trame originale est venu avec une cage de sécurité, mais je l'ai enlevé parce que c'était un
Comment faire un kart électrique

Comment faire un kart électrique

Ce kart a été construit de bas en haut, y compris les logiciels, de fibre de verre, de matériel et de ferronnerie.
Gaz, battant électrique course Kart

Gaz, battant électrique course Kart

Inventé au 50 et course réglé au 60 + dernières années, le kart est le terrain d'entraînement des pilotes de F1 et de l'expérience de conduite plus simple et la plus pure sur 4 roues. Ce qui pourrait faire mieux ?Sans doute le maillon faible est le m
Chibikart : Prototypage rapide un Subminiature électrique Go-Kart à l’aide de Fabrication numérique et composants Hobby

Chibikart : Prototypage rapide un Subminiature électrique Go-Kart à l’aide de Fabrication numérique et composants Hobby

Chibikart! est un kart électrique 2WD très petit mais puissant et maniable que vous pouvez générer à l'aide de standard industriel et de composants de passe-temps et de pièces de châssis mécanosoudé numériquement. À l'aide de batteries ion-lithium mo
Simplifié électrique Imp de Tutorial Arduino Due

Simplifié électrique Imp de Tutorial Arduino Due

Introduction:Il s'agit d'un tutoriel de base pour envoyer des informations de l'Imp électrique à l'Arduino par UART (RX, TX) je suis assez nouveau pour les deux si certaines choses que j'écris est peut-être incorrect. Plupart des informations de que
Arduino contrôlée hélicoptère

Arduino contrôlée hélicoptère

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la Makecourse à l'Université de Floride du Sud (www.makecourse.com). L'objectif de ce cours était pour nous enseigner la créativité, l'ingéniosité et l'application prati
Comment modifier les RC voiture via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Comment modifier les RC voiture via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Cette instruction vous présentera comment modifier les voitures rc à bas prix en utilisant le module nRF24L01 2 .4GHz avec contrôleur Arduino UNO.Jouet de voiture rc ordinaire utiliser AM / FM radiocommande 20-50 MHz, qui ont seulement portée de 5 à
Distributeur de nourriture pour animaux de compagnie réglable de Arduino

Distributeur de nourriture pour animaux de compagnie réglable de Arduino

Bonjour! Bienvenue à notre Instructable pour notre distributeur de nourriture Pet Arduino.Nous sommes Dan et Tom et nous sommes étudiants en design produit à l'Université métropolitaine de Cardiff au pays de Galles du Sud, on nous a donné ce défi dan
Maison Go Kart/Dune Buggy

Maison Go Kart/Dune Buggy

PréfaceBonjour à tous, Merci de regarder mon instructable (qui est mon premier!). J'ai décidé d'écrire cette instructable afin d'inspirer les autres à construire leur propre go kart. Quand je construisais pour l'inspiration j'aller sur google et parc
Véhicule électrique bricolage (solaire assistée)

Véhicule électrique bricolage (solaire assistée)

C'est un véhicule de petite e-kart électrique biplace assisté avec un panneau solaire.Il a été essentiellement une plate-forme d'expérimentation de véhicules à quatre roues motrices, double entraînement direct moteur, installation solaire, acier soud
Dispositifs de commande par commande vocale utilisant android et arduino

Dispositifs de commande par commande vocale utilisant android et arduino

Cette ible servira de questions, comme la façon de contrôler les périphériques par commandes vocales, la reconnaissance vocale disponible dans android.Tous les appareils android est livré avec la reconnaissance vocale intégré. Ceci peut être utilisé
Comment construire un véhicule électrique sur un budget pour le lit bon marché, electric

Comment construire un véhicule électrique sur un budget pour le lit bon marché, electric

il s'agit de comment j'ai construit un kart électrique pour vraiment pas cher qui est devenu une batterie alimentée lit et je vais vous montrer comment je l'ai fait pour vous obtenir des idées pour un projet similaire. Je l'ai fait pour vraiment m'ai
Pixel expédié Counter basée sur Arduino

Pixel expédié Counter basée sur Arduino

Plusieurs fois, nous utilisons souvent LCD comme écran de matériel, de moniteurs de température minuscule de gros équipements industriels.Le plus drôle dans ce projet, c'est qu'il combine deux rouge LED Matrices comme écran. Vous n'avez besoin d'autr