Light Plotter with Intel Edison (14 / 16 stap)

Stap 14: Samenbrengen van alle Code


Dit is een overzicht van de code die is besproken in de vorige stappen. Mijn laatste bestand is bijgevoegd voor uw gebruik.

De code bestaat uit deze klassen

  • lightPen
  • SVGHandler
  • Stepper
  • lightPlotter
  • cmdInterface

LightPen klasse

Deze klasse verzorgt de communicatie met de ESP8266 wifi-gecontroleerde RGB LED via een HTML-interface. Het heeft drie functies

setColourRGBTuple() Deze functie wordt gebruikt om de huidige kleur ingesteld op een RGB-waarde verstrekt in de vorm van een tupel (R, G, B), waar de waarden van R, G en B liggen tussen 0 en 255 (grondtal 10 - decimaal)

setColourHexString() Deze functie wordt gebruikt om de huidige kleur ingesteld op een RGB-waarde verstrekt in de vorm van een hexadecimale tekenreeks "#rrggbb", waar de waarden rr, gg en bb tussen 00 en ff (basis 16 - hex liggen)

setColour() Deze functie wordt aangeroepen door de setColourRGBTuple of setColourHexString toe te passen van de kleur op de LEDS via HTML-verzoek. Als we deze functie rechtstreeks tussen motor stappen genoemd kon het met enige vertraging en interfereren met de vloeiendheid van onze intensivering. Om dit te vermijden het heet in een draad, zodat deze wordt gelijktijdig met de intensivering code uitgevoerd.

SVGHandler klasse

Deze klasse operatie werd uitgelegd in de stap "XY-coördinaten van een SVG" In het kort het leest in een SVG (die wordt verondersteld te hebben van de absolute coördinaten enige en lineaire padobjecten alleen) en slaat ze op als een lijst van de coördinaten van het begin en einde van regels, samen met de kleur van de lijn. De segmenten vormen een lijst van lijsten, met elk segment met de vorm [x 0 y0 x1 y1 RGB]. de x- en y coördinaten zijn genormaliseerd praalwagens (geschaald zodat het minimum 0 is en de maximumwaarde 1 is).

Stepper-klasse

Deze klasse is beschreven in de stap "Python Code om te rijden de steppers". Het verzorgt de I2C communicatie met de stappenmotoren en biedt een eenvoudige step() functie die ofwel beweegt de stepper vooruit of achteruit een stap.

LightPlotter klasse

De LightPlotter klasse brengt alle van deze andere klassen samen in een systeem dat afbeeldingen met licht kunt tekenen. Tijdens initialisatie zijn er een paar belangrijke variabelen die zijn geconfigureerd

  • de twee motoren worden gedefinieerd als motor1 (linker motor) en motor2 (rechter motor), dit zijn exemplaren van de klasse stepper
  • Het aantal horizontale stappen tussen motor1 en motor2 worden gedefinieerd (xRes). Dit moet proefondervindelijk worden bepaald en zal afhankelijk van de diameter van uw katrollen en de afstand tussen de motoren.
  • De standaard tijd tussen stappen (stepTime) wordt gedefinieerd. een waarde van 10mS (0,01) werkte goed voor mij, maar u zal hebben om te bepalen hoe snel u kunt stap zonder ontbrekende stappen.
  • De maximale stap tijd (stepTimeMax) ook is gedefinieerd, maar dit is eigenlijk gewoon een veiligheid voor bepaalde berekeningen, het hoeft niet een hardware-relevantie, koos ik 1 seconde, die nooit werd bereikt in de praktijk.
  • usableArea. Zoals beschreven in de de "Understanding the geometrie van een String Plotter" stap, de extremiteiten direct onder de motoren en rechtstreeks tussen de motoren (boven) moet worden vermeden, zodat ik een variabele "usableArea", die bestaat uit een percentage van de theoretische gebied definiëren. 70% (of 0,7) is een goed uitgangspunt.
  • Soms wilt u misschien uw hele afbeelding verschuiven naar beneden (bijvoorbeeld tot het opstellen van een karakter van de voeten op de grond), de "yOffset" variabele zorgt ervoor dat dit

Dit zijn de functies van de lightPlotter klasse

  • setOrigin
  • goTo
  • runSteppers
  • stepMotors

setOrigin() wordt gebruikt om te vertellen van de lichte plotter dat er momenteel op (0,0) die wordt gebruikt in de kalibratie.

runSteppers() is een gemak-functie waarmee in een aantal stappen die elke motor, evenals het interval tussen stappen voor elke motor wenden moet. Met threads zijn de twee motoren beide kunnen tegelijkertijd worden versterkt.

goTo() neemt een (X, Y) coördineren en berekent het aantal stappen dat elke motor verplaatsen moet om de LED naar die locatie. Daarnaast bepaalt de vertraging tussen stappen om ervoor te zorgen dat beide motoren tegelijkertijd te krijgen naar hun bestemming. Zodra deze gegevens zijn berekend, goTo() maakt gebruik van de functie runSteppers() om de motoren verplaatsen.

cmdInterface klasse

Deze klasse maakt gebruik van de zeer koele Python module "cmd" zodat we gemakkelijk bouwen een opdrachtregelinterface voor onze lichte plotter.

Functies die worden voorafgegaan door "do_" kunnen worden aangeroepen vanaf de opdrachtregel wanneer het script wordt uitgevoerd. U kunt zien dat ze allemaal bijna direct overeen met de functies van de verschillende klassen, in de meeste gevallen bevatten ze een beetje voor de foutcontrole om ervoor te zorgen dat de argumenten gezond zijn. De stap "Hoe te gebruiken the System" zal beschrijven hoe deze te gebruiken.

  • do_plotsvg
  • do_movesteps
  • do_invertMotor
  • do_disableMotor
  • do_enableMotor
  • do_setrgb
  • do_goxy
  • do_goxyrgb
  • do_setusable
  • do_setorigin
  • do_setyoffset
  • do_exit

Gerelateerde Artikelen

Groen huis Smart with Intel Edison en Microsoft Azure

Groen huis Smart with Intel Edison en Microsoft Azure

Ik heb de Intel IoT Roadshow hier in Silicon Valley tijdens afgelopen weekend bijgewoond, en maakte dit koele project – Smart Green House. Intel verstrekt een heleboel sensoren, en ik dacht aan iets met groen huis te doen. Ik heb diverse sensoren in
Intel Edison hydrocultuur Controller

Intel Edison hydrocultuur Controller

Creëren van een IoT ingeschakeld hydrocultuur Controller met behulp van de Intel Edison tijdens de Boston IoT HackathonOns doel:Binnen een 36 uur hackathon voor de bouw van een controller te gebruiken met onze vorige instructable (verticale hydrocult
Intel Edison IoT externe milieuparameters monitor

Intel Edison IoT externe milieuparameters monitor

Dit is een zeer fundamentele project volledig gemaakt in javascript via de IDE "Intel XDK IoT edition". Wanneer u klaar bent, hebt u een systeem te controleren Omgevings parameters (temperatuur, licht en lucht kwaliteit), lokaal in het LCD-scher
Geiger rugzak met Intel Edison

Geiger rugzak met Intel Edison

Wij zijn een groep van makers die graag besteden nachten en weekenden knutselen met tecnology hier bij Verona FabLab (Verona is een stad in het noorden van Italië) en met dit instructable willen we Beschrijf het project wij voor Intel Maker wedstrijd
Intel Edison Sensor Dashboard met behulp van Vrijboord/Python/kolf (minimale programmering nodig)

Intel Edison Sensor Dashboard met behulp van Vrijboord/Python/kolf (minimale programmering nodig)

Eerst wilde ik zeggen dank u voor de kans om te werken met een Edison en voor een door Intel/Instructables wordt gegeven met het oog op het invoeren van hun IoT-wedstrijd. Ik denk dat dit een geweldige manier om te doen gemeenschapsopbouw en ontwikke
TEAM IMPACT! Smart helm - Intel Edison, Sparkfun 9DOF

TEAM IMPACT! Smart helm - Intel Edison, Sparkfun 9DOF

Intel Edison met Sparkfun 9DOF LSM9DS0 IMU3e plaats @ de Intel IoT Roadshow NYC 2015Dit Instructable is voor een Intel Edison IoT Smart helm die gebruik maakt van een 9DOF van Sparkfun om gegevens te verzamelen van de helm om te meten hoofd tramas en
Intel Edison Motion Sensor waterpomp

Intel Edison Motion Sensor waterpomp

Leer het bouwen van een geautomatiseerde water pompsysteem door het gebruik van een motiesensor en een waterpomp.Benodigde materialen:1 x 6v Mini waterpomp2 x Grove IR afstand Interruptor1 x Grove estafette (30a)1 x Grove Water Sensor1 x Intel edison
Intel Edison lawaai Alarm (Intel IoT)

Intel Edison lawaai Alarm (Intel IoT)

IntroductieIk heb een inbraakalarm en brandalarm, maar geen manier om te weten als ofwel zijn klinkende tenzij ik in het huis ben. In plaats van hen vervangen door 'slimme' alternatieven, ik ben van plan om te bouwen van een apparaat om te luisteren
Geautomatiseerde gordijn met behulp van intel Edison & thethings. IO

Geautomatiseerde gordijn met behulp van intel Edison & thethings. IO

Keer gaat door en dingen krijgen oud en dus, ze eindelijk breken. Jaloezieën zijn een uitzondering niet.Dit is een van de redenen waarom we het kopen van gordijnen. Niet alleen voor esthetica maar ook voor het filtreren van de hoeveelheid licht in on
MCU-1: Een prijsbewuste Intel Edison MCU gebaseerd Rover speelgoedauto. (Intel IoT)

MCU-1: Een prijsbewuste Intel Edison MCU gebaseerd Rover speelgoedauto. (Intel IoT)

Kleine weergegeven video: obstakel te vermijden en weinig knop gebaseerde opdrachten via bluetooth.Stap 1: samenvattingDit project zal het bouwen van een eenvoudige rover auto die kan worden gecontroleerd door een Androïde slimme app met behulp van s
Maken van een intelligente bureauklok, geschreven in JavaScript, aangedreven door de Intel Edison

Maken van een intelligente bureauklok, geschreven in JavaScript, aangedreven door de Intel Edison

Waarom moeten mijn klokken worden intelligenter...Ik altijd herinneringen instellen voor mijn agenda vergaderingen maar wanneer die weinig "XYZ vergadering, die begint in 15 minuten" desktop kennisgeving in de hoek van het computerscherm van mij
Intel IoT EDI - toezicht op een comfortabele en veilige omgeving (met Intel Edison)

Intel IoT EDI - toezicht op een comfortabele en veilige omgeving (met Intel Edison)

Voordat ik wil om te beginnen, Intel en Instructables bedanken voor deze kans: Ik heb geselecteerd onder andere winnaar van een wonderbare Intel IoT Edison & Grove Kit... Dat was erg verrassend aan me, en ik ben zeer dankbaar voor het. Bedankt! :-)In
Intel Edison, nabijheid geactiveerd, spreken kalender

Intel Edison, nabijheid geactiveerd, spreken kalender

(Boven is een Video - maar kan niet op een mobiele telefoon. Klik hier om te bekijken op youtube. )Dit project werd gepland als een Ondersteunende technologie apparaat voor verzorgers van mensen met Geheugenstoornissen. Het is een wandmodel kalender
Intel Edison - Robot

Intel Edison - Robot

Geruime tijd geleden ik een Arduino Robot gebouwd en vervolgens een upgrade dat naar een betere versie die veel sneller was, na het experimenteren met de Intel Edison heb ik besloten om de Arduino robot een upgrade en vervanging van de Arduino met de