Sekundenzähler für Binary Clock
7 Schritt:Schritt 1: Zu Beginn: Schritt 2: Warum Bascom AVR? Schritt 3: Schematische: Schritt 4: Im Test Verpflegung: Schritt 5: Das Programm: Schritt 6: Das Ende Schritt 7: Betet für den Frieden in meinem Land
; die Idee ; 32 + 16 + 8 + 4 = 60 sec oder 111100Step 1: Zu Beginn: السلام عليكم Zunächst einmal sorry für mein schlechtes Englisch: | in diesem instructable Ich werde Ihnen zeigen, wie man "Binäruhr" beginnend von Sekundenzähler auf Minuten und Stunden in Finale schaffen Schritt 2: Warum Bascom AVR? Ich habe bascom Sprache, um die Programmierung -ATMIGA8L- _MCU_ , einer Hochsprache war es und hat etwa 130 Anweisung mit einer klar und einfach Richtlinien so werden die "bascomian Programmierer" :-D Dieses / 5 / Standard-Prinzipien in Programmierung wissen würde: 1- Richtlinien (die MCU, Kristall .. 2- Konfiguration (pin, Hafen, ADC .. 3- Variablen (x, y ... 4- Hauptprogramm 5- Subroutinen und man sollte diese Sätze zu jedem Programm zu folgen Sie es schreiben Schritt 3: Schematische: wir benötigen '6 LEDs (3mm) '6 Widerstände (200 Ohm ...) '1 Mikrocontroller (in meinem Fall ATMEGA8L) Verbinden Sie jeden Komponenten wie das Bild Schritt 4: Im Test Verpflegung: nachdem wir die Komponenten verbunden es ist gut wie das erste Bild sein wir verbinden die LEDs direkt an Controller, weil sie verdienen nur 10 mA 1 pin und von allen Stiften 60 mA und mein Controller können diesen Wert zu widerstehen (es kann bis zu 300 mA zu widerstehen) gegebenenfalls Komponente; - Ich habe Schwammkappe (old watch box) Ich habe ihn von der Mitte nach der Montage der LEDs schneiden (es ist schwarz, um das Licht zu absorbieren und die Uhr zu deutlich zu sehen) Schritt 5: Das Programm: * Richtlinien: $ regfile = "m8def.dat" $ crystal = 1000000 * Konfiguration: Config PORTC = & B00111111 * Variable: PORTC = & B00000000 * verstümmeln Programm: Machen Während PORTC = & B00111100 Incr PORTC warten 1 Wend PORTC = & B00000000 Schleife Ende ............................................ Schritt 6: Das Ende Alle 7 Artikel anzeigen in der Folge bekamen wir hatten Sekundenzähler Bild 1: 0 und nach einer Sekunde Bild 2: 1 ..picture 3: 2 Bild 4: 3 5. 4 und 59 60 Schritt 7: Betet für den Frieden in meinem Land innerhalb der majestätischen umayad Moschee Syrien, Damascus ältere Stadt der Welt :-)$(function() {$("a.lightbox").lightBox();});
Installieren ATtiny13 Core-Dateien
In einer instructable "Machen Sie ein ATtiny13 basierten IR-Näherungssensor für 2,42 €" von Dustin Andrews bezieht sich auf mit den ATtiny13 Core-Dateien zu installieren. Leider sind die Core-Dateien, die miteinander verbunden sind, um nicht den boards.txt Datei, die der Attiny 13 Stich lässt enthalten zeigen sich als Wahl unter "Extras-Boards in der IDE. Wenn Sie ein Neuling bei der Installation von Core-Dateien sind dies mag entmutigend, aber da ich tat es einfach, ich dachte, ich würde nur zu teilen dieses Wissen mit Ihnen. Gehen Sie folgendermaßen vor: -Download Die Attiny Kerne aus: http://sourceforge.net/projects/ard-core13/ -Go Zu Ihrem Ordner Skizzen -Die meisten wahrscheinlich, es gibt einen Ordner namens "Hardware" wenn nicht, zu erstellen, dass. -open die Hardware-Ordner -Mit Ordner namens 'ATtiny13' -open diesen Ordner -Mit Ordner namens Kerne -open diesen Ordner -Mit neuen Ordner namens "core13 ' -so Sie jetzt die Struktur / hardware / ATtiny13 / Kerne / core13 haben -open dass tiefsten Ordner und entpacken Sie die ATtiny Core-Dateien in diesen Ordner -go zurück zu Ihrer / hardware / ATtiny13 Ordner -Mit Textdatei namens "boards.txt ' Öffnen Sie diese Datei. fügen Sie den folgenden Text in der Datei: ################################################## ######################### attiny13int.name = ATtiny13 @ 128 KHz (interne Watchdog Oszillator) attiny13int.upload.using = arduino: arduinoisp attiny13int.upload.maximum_size = 1024 attiny13int.upload.speed = 250 # wichtig, nicht die Verbindung zu einem langsamen Prozessor verlieren attiny13int.bootloader.low_fuses = 0x7B attiny13int.bootloader.high_fuses = 0xFF attiny13int.bootloader.unlock_bits = 0x3F attiny13int.bootloader.lock_bits = 0x3F attiny13int.build.mcu = ATtiny13 attiny13int.build.f_cpu = 128000 attiny13int.build.core = core13 ################################################## ############# attiny13at4.name = ATtiny13 @ 4.8MHz (interne 4,8-MHz-Takt) attiny13at4.upload.using = arduino: arduinoisp attiny13at4.bootloader.low_fuses = 0x69 attiny13at4.bootloader.high_fuses = 0xff attiny13at4.upload.maximum_size = 1024 attiny13at4.build.mcu = ATtiny13 attiny13at4.build.f_cpu = 600000 attiny13at4.build.core = core13 ################################################## ############# attiny13.name = ATtiny13 @ 9.6MHz (interne 9,6-MHz-Takt) attiny13.upload.using = arduino: arduinoisp attiny13.bootloader.low_fuses = 0x7a attiny13.bootloader.high_fuses = 0xff attiny13.upload.maximum_size = 1024 attiny13.build.mcu = ATtiny13 attiny13.build.f_cpu = 1200000 attiny13.build.core = core13 ################################################## ############# Ich habe diese Datei 'boards.txt' von hier, aber musste es, wie die Datei 'sneekishly' plötzlich ändert der Programmierer in seiner letzten Definition anzupassen, ein wenig, und auch ich hatte große Mühe, mehr als 2 Boards zu zeigen, bis ich erkannte, dass 2 der Platine Definitionen trug den gleichen Namen, also musste ich ändern, dass auch. Auch die Namen der Platten sind nicht ganz korrekt. Die Sicherungen auf dem 4,8 MHz Bord sind 0x69 und 0xFF. Dies zeigt an, dass der Vorteiler ist bereits auf Division durch acht festgelegt, die mit der F_CPU von 600.000 entspricht. Für die 9.6MHz interne Uhr Bord, sehen wir, dass die Sicherungen 0x7a und 0xFF sind tatsächlich richtige für 9.6MHz ohne Vorteiler, aber dann die F_CPU von 1200,000 nicht richtig ist, dass die Punkte, um eine Division durch 8 für die die Sicherungen sollten 0x6A sein und 0xFF. Allerdings habe ich nicht mit Zohan an, dass und alles funktionierte gut, aber die Zeitpunkte könnten ausgeschaltet sein. Vielleicht möchten Sie Ihren boards.txt Datei anpassen, sobald Sie haben es alle installiert, um die wahren Einstellungen zu reflektieren. Außerdem werden Sie die 128 kHz nicht gefunden Einstellung sehr nützlich, und die Gefahr ist, dass Sie möglicherweise nicht mehr mit Ihren Chip zu kommunizieren, weil es zu langsam wird, Also, nur als letzte Kontrolle, dass Sie alles richtig gemacht haben: Gehen Sie zu Ihrer Hardware folderYou sollten sehen, ein Ordner dort aufgerufen ATtiny13 Öffnen Sie den Ordner Es sollte 2 Einträge: einen Ordner namens "Kerne" und eine Textdatei namens "boards.txt ' öffnen Sie den Ordner "Kerne" Einen Ordner namens 'core13': Das sollte einem Eintrag haben open 'core13'. Dort sollten Sie 13-Dateien mit "h", "c" und "cpp" Erweiterungen zu finden. Um es einfach machte ich eine ZIP-Datei, die mit dem richtigen Verzeichnis-Struktur zu entpacken sollte. Entpacken Sie es in der "Hardware" Ordner. Als zusätzlichen Anmerkung: im Jahr 2015, als ich wollte ein paar ATtiny13 Programm, scheinbar hatte ich meine Installation aufgeschraubt und ich könnte nicht zu programmieren, die Chips nicht mehr. Offenbar hatte ich vergessen, ich dieses ibble schrieb. Eine Suche fand meinen eigenen ibble und wenn ich die Zip-Datei installiert ... alles wieder lief wie am Schnürchen.
Programming TI-84 Plus (Silver Edition) Erweiterte
15 Schritt:Schritt 1: Conditionals Schritt 2: Loops Schritt 3: Randomisierung Schritt 4: Der Befehl getKey Schritt 5: Zwei Bildschirme Schritt 6: Meilen und Kilometern Schritt 7: Quadratische Formel Schritt 8: Binary Schritt 9: Bouncer Schritt 10: Chatbot Schritt 11: Pranks Schritt 12: Umbenennen / Löschen eines Programm Schritt 13: Unterprogramme Schritt 14: Archiv Schritt 15: Sichern Ihrer Rechner
Dies ist die fortgeschrittene Programmierung der TI-84 Plus oder silver edition. Ich empfehle, den Anfänger instructable (http://www.instructables.com/id/Programming-TI-84-Plus-Silver-Edition-for-beginn/) vor Beginn dieser instructable zu tun. Seien Sie sicher, dass Sie mit allen in den Programmen, die Sie in der Anfänger instructable gemacht verwendeten Befehlen vertraut sind. Sind Sie kein Anfänger, aber sind Sie gerade auf der Suche für einige weitere Informationen zum fortgeschrittenen Programmen zu machen, dann sind Sie genau an der richtigen Stelle. Aber auch, wenn Sie kein Anfänger sind, bitte ich Sie immer noch, um die Anfänger instructable, bevor diese zu lesen, nur damit Sie wissen, was Sie brauchen, um in der Lage zu sein. Ich weiß, dass meine Programme sind nicht die kompakteste und effizienteste ist, aber sie funktionieren gut, sehen gut aus und machen genau das, was Sie von ihnen wollen. Wenn Sie etwas, das Sie nicht verstehen, sehen, bitte Kommentar und ich werde erklären. Wenn Sie Feedback auf meine Programme haben oder wissen, eine bessere oder kompakter Weg, dieses Programm, bitte kommentieren. Auch dieses instructable ist in mehrere Abschnitte unterteilt: 1. erweiterte Befehle 1. Voraussetzungen - die if then else Bedingung 2. Schleifen - ein anderer Weg, um Schlaufen (nicht bei Lbl) 3. Zufalls - ein Weg, um den Rechner in einer Zufallszahl gesetzt werden. 4. die getKey Befehl - eine erweiterte Befehl, der wirklich praktisch sein wird. 2. erweiterte Programmierung 5. zwei Bildschirme - eine Erläuterung, wie Sie die Grafik und Home-Bildschirm verwenden. 6. Meilen und Kilometern - eine erweiterte Version des Programms, das Sie in die Anfänger instructable gemacht. 7. quadratische Formel - eine erweiterte Version des Programms, das Sie in der Anfänger instructable gemacht. 8. Binär - ein Programm, das die Binärzahl einer Dezimalzahl berechnet. 3. Programme kann Spaß machen 9. Türsteher - ein Spaß-Programm, das in der Tat eine Art Bildschirmschoner. 10. chatbot - ein Programm, das es ermöglicht, mit Ihrem Rechner zu plaudern. 11. Streichen - kleine Programme, um Ihre Freunde mit zu täuschen. 4. Tipps und Tricks 12. Umbenennen / Löschen eines Programms - wie der Name eines Programms ändern oder löschen ein. 13. Unterprogramme - wie man ein Programm ausführen ein anderes Programm. 14. Archive - der zweite Speicher. 15. Sichern Sie Ihren Taschenrechner - ein Programm auf Ihrem Computer, so dass Sie nie Ihre Programme zu verlieren. Hinweis: Diese instructable vorgerückt. Ich werde nicht zu bauen das Programm Schritt für Schritt, wie ich in der Anfänger instructable taten. Ich werde Ihnen das Programm zu zeigen, zu erklären, was es tut und erklären, warum Sie bestimmte Befehle hinzufügen müssen. Wenn Sie eine Frage haben, einfach nur zu empfehlen. Schritt 1: Conditionals Die If Bedingung Sie können schon heute einen Programm, das zählen kann, aber wie wollen Sie es zu stoppen von der Zählung, wenn es 100. Mit einer Bedingung natürlich erreicht. Eine Zählung Programm könnte in etwa so aussehen: : 0 → A : Lbl A : A + 1 → A : Disp A : Gehe zu A Jetzt haben Sie zwei Zeilen, die es bei 100 zu stoppen machen hinzuzufügen, so dass Sie diese: : 0 → A : Lbl A : A + 1 → A : Disp A : Wenn A = 100 :Stopp : Gehe zu A (Die = kann durch Drücken von 2nd gefunden werden, Mathematik) Bei Verwendung der If-Bedingung, wird es prüfen, ob die Bedingung (A = 100) ist richtig. Wenn es ist, wenn wird weitergehen mit der Zeile darunter und dann weiter mit den Zeilen darunter, dass man. Wenn die Bedingung falsch ist, wird es die nächste Zeile überspringen und fahren Sie mit der Linie zweiten Zeile nach unten. Also das Programm beginnt mit 0. Dann zählt bis 1. Es zeigt 1 und prüft, ob A 100. Da 1 ist nicht das Gleiche wie 100, wird die nächste Zeile zu überspringen und auf den Goto A. So werde gehen zurück zu Lbl A und zählen auf. Aber wenn A gleich 100 ist, wird es weiter mit der nächsten Zeile, die Stopp sagt, so wird das Programm zu beenden. Die If Then Else-Bedingung Aber vielleicht möchten Sie machen das Programm zu tun mehr als eine Sache, wenn es erreicht 100. Beispielsweise machen es angezeigt '100 erreicht worden ist. " Natürlich können Sie das wie folgt tun: : 0 → A : Lbl A : A + 1 → A : Disp A : Wenn A = 100 : ClrHome : Wenn A = 100 : Disp "100 wurde erreicht" : Wenn A = 100 : Pause : Wenn A = 100 :Stopp : Gehe zu A aber auf diese Weise wird Ihr Programm viel größer als es sein könnte. Sie könnten auch Sie es wie folgt: : 0 → A : Lbl A : A + 1 → A : Disp A : Wenn A = 100 : Dann : ClrHome : Disp "100 ERREICHT : Pause :Stopp : Else : Gehe zu A Dieses Programm überprüft, ob A = 100. Wenn ja, wird es nur weitergehen. Aber wenn es nicht ist, wird das Programm alles überspringen, bis es Else erreicht und dann weitergehen. Jetzt können Sie den Stoppbefehl zu löschen, weil dann, wenn A = 100, wird es zuerst löschen Sie den Startbildschirm, und den Text anzuzeigen, die Pause, bis Sie die Eingabetaste drücken, und dann gibt es eine Else-Befehl, so werden die Befehle für dieses Stück Ende und das Programm zu stoppen, so dass Ihr Programm wird in etwa so aussehen: : 0 → A : Lbl A : A + 1 → A : Disp A : Wenn A = 100 : Dann : ClrHome : Disp "100 ERREICHT : Pause : Else : Gehe zu A Eine Möglichkeit der Notation, die sehr häufig ist eine If Then Else-Bedingung wie folgt aus: : Wenn A = ...: Dann : ..... : Else Die: kann durch Drücken von ALPHA, "Punkt" gefunden. Sie können das: anstelle der Zugabe von überall in dem Programm eine zusätzliche Zeile. Man könnte ein ganzes Programm auf eine Zeile zu schreiben, aber das ist nicht sehr praktisch, denn mit einem versehentlichen Druck auf klare und Ihr Programm wurde vollständig entfernt, mit Ausnahme des Namens, so dass ich nicht empfehlen. Mehrere Bedingungen Aber vielleicht möchten sie sich verlassen und machen es zu bitten, auf jeder Zeit zu zählen, nachdem 100 hinzugefügt wurde. Dann können Sie die 'und' und Befehle "oder", die durch Drücken der 2., Mathematik, Recht zu finden sind verwenden. Ihr Programm sollte in etwa so aussehen: : 0 → A : Lbl A : A + 1 → A : Disp A : Wenn A = 100 oder A = 200 oder A = 300 oder A = 400 oder A = 500 : Menü ("? Go on", "JA", A, "NEIN", B : Gehe zu A : Lbl B Dieses Programm wird prüfen, ob A = 100 oder A = 200 oder A = 300 und so weiter. Wenn ein Recht ist, wird es das Menü aufzurufen und geben Ihnen die Möglichkeit, es zählen oder nicht. Wenn nicht, werde es zu stoppen, sonst wird es zu zählen auf, bis die Bedingung wieder wahr. Eine weitere mögliche Mehrfachbedingung ist einer wie folgt aus: : Wenn A = 30 und B = 2 In dieser Sache wird das Programm prüfen, ob A ist gleich 30. Wenn ja, wird sie prüfen, ob B ist gleich 2. Wenn diese erfüllt sind beide, wird es weiter mit der Linie direkt darunter. Wenn eine dieser Bedingungen nicht erfüllt, wird die nächste Zeile zu springen, wie es normalerweise der Fall ist, wenn die Bedingung falsch ist. Sie können auch diese beiden Arten von mehreren Bedingungen wie folgt zu kombinieren: : Wenn A = 30 und B = 2 oder A = 100 und B = 2 Ich denke, dass Sie herausfinden können, was Sie sich dies zu tun. Neue Befehle: Wenn Dann Sonst Schritt 2: Loops Sie können eine Schleife mit dem Befehl Lbl und Goto Befehl wie diesen zu erstellen: : 0-> A : Lbl A : A + 1-> A : Wenn A <20 : Gehe zu A Aber dies kann leichter mit dem Befehl Während erfolgen. Das Programm wird wie folgt aussehen: : 0-> A : Während die A <20 : A + 1-> A :Ende Wie Sie sehen können, ist dies viel kürzer. Der Befehl End ist das Ende der Schleife. Dieses Programm wird prüfen, ob A kleiner als 20 Solange diese Bedingung erfüllt ist, wird es weitergehen mit den folgenden Zeilen, bis er den Befehl Ende findet. Dann wird es wieder zur Kommando Während gehen und überprüfen, wenn die Bedingung noch wahr. Wenn die Bedingung falsch wird es jede folgende Zeile überspringen, bis es den Befehl End findet und fahren Sie mit den Linien nach dem Ende. Wenn Sie eine bedingungslose Schleife machen möchten, können Sie diese verwenden: : 0-> A : Während 1 : A + 1-> A :Ende 1 steht hier für eine Bedingung, die immer wahr ist. Dies könnte praktisch sein, wenn es müssen mehrere Möglichkeiten, um die Schleife zu beenden, zum Beispiel: : 0-> A: 0-> B : Während 1 : A + 1-> A : B + 2-> B : Wenn A = 5 : Goto C : Wenn B = 8 : Goto D :Ende Eine Sache, die ich empfehlen dir ist, um die Schleife ein lable zu geben: : Lbl A : Während 1 : S tuff :Ende Wenn Sie nun um das Programm zurück in die Schleife, nachdem es die Schleife verlassen, benutzen Sie einfach Goto A. Neue Befehle: Während EndStep 3: Randomisierung Manchmal möchten Sie das Programm, um etwas zufällig zu tun, wie Ihnen mitteilt, eine Zufallszahl, oder Platzierung Text an einer beliebigen Stelle. Um dies zu tun, können Sie die randInt (Befehl verwenden, Sie müssen es wie folgt zu verwenden.: : randInt (a, b) Es wird eine Zufallszahl zwischen A und B wählen (könnte auch sein, a oder b). Also, wenn Sie möchten ein Programm, das Ihren Namen an einer beliebigen Stelle auf dem Bildschirm, wenn Sie drücken Sie die Eingabetaste legt wollen, sollten Sie Ihr Programm wie folgt aussehen: : ClrHome : Lbl A : getKey-> K : Wenn K = 0 : Gehe zu A : Wenn K = 105 : Ausgang (randInt (1,8), randInt (1,16), "NAME : Gehe zu A Selbstverständlich können Sie auch geben einem Brief einen Zufallswert, wie folgt aus: : randInt (a, b) -> R Neue Befehle: randInt (Schritt 4: Der Befehl getKey Der Befehl getKey ist eine erweiterte Befehls Hexe wird verwendet, um ein Programm, fragen Sie nach einem Schlüssel. Es könnte eine beliebige Taste mit Ausnahme der On Schlüssel sein. Es gibt eine Sache, die Sie zu diesem Befehl wissen müssen. Es ist nicht ein Befehl wie Eingabeaufforderung oder Eingabe wartet Hexe für Sie einen Wert zu geben. Wenn Sie einen Wert eingegeben, wird es weitergehen mit dem Programm mit dem Wert 0. Um es "warten" für Ihre Antwort, die Sie, um eine Schleife erstellen müssen. Hier ist ein Beispiel für eine solche Schleife: : LBL 1 : getKey : Wenn Ans = 0 : Goto 1 Wie Sie sehen können, können Sie die Taste, die mit Ans setzen in wieder zu verwenden. Es gibt nur ein Problem mit diesem. Ich werde in einer zweiten zurückkommen. Zuerst müssen Sie wissen, wie dieser Befehl tatsächlich funktioniert möchten. Nun hat jeder seine eigene Schlüsselnummer. Sie können sehen, welche Zahl, auf die Taste auf dem Bild gehört. Wenn Sie eine Taste drücken, wird Ans seinen Wert zu erhalten. Aber jetzt das Problem mit dieser Notation. Wenn Sie die getKey Befehl verwenden, um Werte von Variablen ändern würde, könnte auf diese Weise einige Probleme zu geben. Können sagen, Sie dieses Programm haben: : 0 → A : LBL 1 : getKey : Wenn Ans = 0 : Goto 1 : Wenn Ans = 25 : A + 1 → A : Wenn Ans = 34 : A-1 → A : Disp A : Goto 1 Dieses Programm sollten Sie den Wert A. Wenn Sie drücken, sollte man zu A hinzugefügt werden, und wenn Sie nach unten zu drücken, sollte man von A. abgezogen Dann sollte es Sie den Wert A. Leider ist dieses Programm zeigen, zeigen, nicht wirklich arbeiten so. Das Problem liegt in der Art Ans funktioniert. Es nimmt den Wert der letzten Berechnung getan. Wenn Sie drücken, wird Ans 25 sein, also wird man hinzugefügt werden. Aber was es tut, ist neben aussehen, wenn Ans ist 34. Ans wird 34 sein, wenn A 34, weil A + 1 ist der letzte Berechnungs es getan hat, so dass in diesem Programm A kann nie größer als 33 sein, sicher, das Programm zu machen macht einen guten Job, gib getKey einen anderen Wert, K zum Beispiel. Ihr Programm sollte nun in etwa so aussehen: : 0 → A : LBL 1 : getKey → K : Wenn K = 0 : Goto 1 : Wenn K = 25 : A + 1 → A : Wenn K = 34 : A-1 → A : Disp A : Goto 1 Jetzt natürlich denken, dass Sie, wie kann ich wissen, alle Werte aller Schlüssel? Sie brauchen nicht zu. Sie könnten ein Programm, das für Sie :) Das Programm könnte in etwa so aussehen macht: : LBL 1 : getKey : Disp Ans : Goto 1 Es ist eine wirklich kleine, aber sehr praktisches Programm. Das einzige, was sie tut, ist wiederholt Display 0, bis Sie eine Taste drücken. Wenn Sie das tun, wird es den Wert, der auf den Schlüssel und dann gehört anzuzeigen wieder wiederholt angezeigt 0. Sie könnten das Programm in die 0 nicht jedes Mal angezeigt, aber wenn Sie das tun, wird das Programm nur viel größer sein und es wird nicht daran erinnern, auf die Tatsache, dass, wenn Sie einen Schlüssel eingeben, wird es nur gehen mit dem Wert 0. Es gibt auch ein weiterer Trick, um den Wert jeder Taste erinnern. Erste Zählung von der oberen Tastenreihe bis zu der Zeile des Schlüssels Sie wollen. Angenommen, Sie haben, um den Wert prgm wissen wollen. Es ist Zeile Zeile 4. Nun zählen von links nach rechts. PRGM wird den 3. Schlüssel sein. prgm ist Zeile 4, Taste 3, so ist es Wert ist 43. Neue Befehle: getKeyStep 5: Zwei Bildschirme In Hardware, hat der Rechner nur einem Bildschirm, sondern in der Software, zwei hat. Sie könnten beide verwenden, um das Programm der Arbeit mit zu machen, aber Sie können nur einen zur gleichen Zeit. Diese Bildschirme sind die Heimat-Bildschirm und der Graph-Bildschirm. Startbildschirm Das Heim-Bildschirm ist der Bildschirm, wo Sie eine Formel eingeben und der Rechner gibt die Antwort. Dieser Bildschirm wird durch Befehle wie Disp, Input, Output (, Prompt und ClrHome verwendet wird. Dies ist auch der Bildschirm, in dem Geschehen gezeigt beim Beenden eines Programms. In der Tat ist dies der Hauptbildschirm und mosly für einfache Programme oder Rechenprogramme verwendet ,. ist wie die quadratische Formel Dieser Bildschirm nicht so genau, weil es nur 16 von 8 Positionen (16 breit und 8 hoch). In einer Position können Sie ein Zeichen setzen, wie eine Zahl, einem Buchstaben, einer blanc Ort oder a + , -, / oder * Einige Zeichen nehmen verschiedene Positionen, wie cos (Dies nimmt man 4 Positionen in einer Reihe... Graph-Bildschirm Der Graph-Bildschirm ist der Bildschirm, in dem der Rechner zieht es Graphen. Dieser Bildschirm wird durch Befehle, die durch Drücken DRAW (2., PRGM) gefunden werden können verwendet. Dieser Bildschirm ist viel genauer, weil es 94 von 62 Positionen, oder tatsächlich Pixel. Jedes Pixel kann ein- oder ausgeschaltet durch die Befehle aus dem DRAW-Menü eingeschaltet werden. Ich empfehle Machen Sie sich mit diesen Befehlen. Sie sind sehr Hand, aber nicht so schwer zu verstehen. Ich werde Entsendung eines anderen instructable, wie man auf dem Rechner in der nahen Zukunft zu ziehen, erklären die meisten Befehle im Menü Zeichnen gegeben. Schritt 6: Meilen und Kilometern Vielleicht haben Sie nicht wie die Meilen und Kilometern Programm vom Anfänger Niveau. Dies könnte daran liegen Sie, um das Programm zu schließen und neu starten, um einen anderen Wert eingeben musste. Was passiert, wenn ich Ihnen sagte, müssen Sie nicht auf. In diesem Schritt zeige ich Ihnen einen Weg, um das Programm zu machen schöner aussehen und mehr praktisch. Hier ist das Programm: : 0-> A: 0-> M: 0-> N : Lbl 3 : ClrHome : Wenn A = 0: Dann : Ausgang (1,1 "MILES: : Ausgang (1,7, M : Ausgang (2,1 ", KM: : Ausgang (2,7, N : Goto 1 : Else : Ausgang (2,1 "MILES: : Ausgang (2,7, M : Ausgang (1,1 ", KM: : Ausgang (1,7, N : LBL 1 : getKey-> K : Wenn K = 25 und A = 0 oder K = 34 und A = 0 : Dann : ClrHome : Ausgang (2,1 "MILES: : Ausgang (2,7, M : Ausgang (1,1 ", KM: : Ausgang (1,7, N : 1-> A : Goto 1 : Else : Wenn K = 25 und A = 1 oder K = 34 und A = 1 : Dann : ClrHome :: Output (1,1 "MILES: : Ausgang (1,7, M : Ausgang (2,1 ", KM: : Ausgang (2,7, N : 0-> A : Goto 1 : Else : Wenn K = 105 : Goto 2 : Wenn K = 22 : Dann : ClrHome : Else : Goto 1 : Lbl 2 : Wenn A = 0: Dann : Ausgang (2,1 ", KM: : Input "MILES:", M : M * 1.609344-> N : Ausgang (2,1 ", KM: : Ausgang (2,7, N : Goto 3 : Else : Ausgang (2,1 "MILES: : Input "KM", N : N / 1.609344 : Ausgang (2,1 "MILES: : Ausgang (2,7, M : Goto 3 Was tut es? Dieses Programm wird zuerst angezeigt werden folgendermaßen aus: MILES: 0 KM: 0 Wenn Sie drücken oder nach unten werden sie Position zu wechseln. Wenn Sie die Eingabetaste drücken, wird es für einen Wert von der, die an der Spitze ist zu fragen. Geben Sie einen Wert ein und drücken Sie die Eingabetaste. Es wird den anderen Wert zu berechnen und anzeigen. Wenn Sie nun die Taste nach oben oder unten, wird MILES und KM Position wieder eingeschaltet, so sind die Werte, bis Sie erneut die Eingabetaste drücken. Dann werden die Werte auf 0 zu ändern und das Programm wird für einen anderen Wert der eine, die auf der Oberseite ist zu fragen. Wenn Sie MODE drücken, wird das Programm zu stoppen. Wenn Sie ein Programm, welche Variablen verwendet zu machen, empfehle ich, alle Variablen Sie verwenden, um 0 zu Beginn des Programms zu ändern. Der "und" und "oder" Befehl kann durch Drücken von 2nd, Mathematik (Test), und drücken Sie links. Schritt 7: Quadratische Formel Es könnte auch sein, die Sie nicht wie die letzten quadratische Formel-Programm, denn man konnte nicht sehen, was Sie für die A, B und C nach dem Aufstehen die Werte für X eingegeben, oder vielleicht, weil, wenn du nur um den Wert zu ändern A, müssten Sie das Programm neu starten und geben Sie dieselben Werte für B und C alle immer wieder. Mit diesem Programm werden alle diese Probleme gelöst sind. Das Programm ist sehr viel größer als die letzte, aber es sieht schöner und besser funktioniert. : Lbl 5 : 0-> A: 0-> B: 0-> C: 0-> D: 0-> X: 0-> Y: 0-> Z : Lbl 3 : ClrHome : Wenn Z = 0: Dann : Ausgang (1,1, "A = : Ausgang (1,3, A : Ausgang (2,1, "B = : Ausgang (2,3, B : Ausgang (3,1, "C = : Ausgang (3,3, C : Ausgang (4,1 "DISCR = : Ausgang (4,7, D : Ausgang (5,1, "X = : Ausgang (5,3, X : Ausgang (6,1, "OR : Ausgang (7,1, "X = : Ausgang (7,3, Y : Goto 1 : Else : Wenn Z = 1: Dann : Ausgang (3,1, "A = : Ausgang (3,3, A : Ausgang (1,1, "B = : Ausgang (1,3, B : Ausgang (2,1, "C = : Ausgang (2,3, C : Ausgang (4,1 "DISCR = : Ausgang (4,7, D : Ausgang (5,1, "X = : Ausgang (5,3, X : Ausgang (6,1, "OR : Ausgang (7,1, "X = : Ausgang (7,3, Y : Goto 1 : Else : Ausgang (2,1, "A = : Ausgang (2,3, A : Ausgang (3,1, "B = : Ausgang (3,3, B : Ausgang (1,1, "C = : Ausgang (1,3, C : Ausgang (4,1 "DISCR = : Ausgang (4,7, D : Ausgang (5,1, "X = : Ausgang (5,3, X : Ausgang (6,1, "OR : Ausgang (7,1, "X = : Ausgang (7,3, Y : LBL 1 : getKey-> K : Wenn K = 0: Goto 1 Punkt 1 : Z + (K = 25) - (K = 34) -> Z Marke 2 : Wenn Z = 3: 0-> Z Marke 3 : Wenn Z = -1: 2-> Z Zeichen 4 : Wenn K = 105: Goto 2 : Wenn K = 22: Markieren Sie dann 5 : ClrHome : Else : Goto 3 : Lbl 2 : Wenn Z = 0: Goto A : Wenn Z = 1: Goto B : Wenn Z = 2: Goto C : Lbl A : ClrHome : Ausgang (2,1, "B = : Ausgang (2,3, B : Ausgang (3,1, "C = : Ausgang (3,3, C : Ausgang (4,1 "DISCR = : Ausgang (4,7, D : Ausgang (5,1, "X = : Ausgang (5,3, X : Ausgang (6,1, "OR : Ausgang (7,1, "X = : Ausgang (7,3, Y : Input "A =", A : Wenn A = / 0 und B = / 0 und C = 0: Markieren Sie dann 6 : B²-4AC-> D : Wenn D <0: Gehe zu E : (- B-√ (D)) / (2A) -> X : (- B + √ (D)) / (2A) -> Y : Goto 3 : Else : Goto 3 Zeichen 7 : Lbl B : ClrHome : Ausgang (2,1, "C = : Ausgang (2,3, C : Ausgang (3,1, "A = : Ausgang (3,3, A : Ausgang (4,1 "DISCR = : Ausgang (4,7, D : Ausgang (5,1, "X = : Ausgang (5,3, X : Ausgang (6,1, "OR : Ausgang (7,1, "X = : Ausgang (7,3, Y : Input "B =" B : Wenn A = / 0 und B = / 0 und C = 0: Dann : B²-4AC-> D : Wenn D <0: Gehe zu E : (- B-√ (D)) / (2A) -> X : (- B + √ (D)) / (2A) -> Y : Goto 3 : Else : Goto 3 : Lbl C : ClrHome : Ausgang (2,1, "A = : Ausgang (2,3, A : Ausgang (3,1, "B = : Ausgang (3,3, B : Ausgang (4,1 "DISCR = : Ausgang (4,7, D : Ausgang (5,1, "X = : Ausgang (5,3, X : Ausgang (6,1, "OR : Ausgang (7,1, "X = : Ausgang (7,3, Y : Eingang "C =", C : Wenn A = / 0 und B = / 0 und C = 0: Dann : B²-4AC-> D : Wenn D <0: Gehe zu E : (- B-√ (D)) / (2A) -> X : (- B + √ (D)) / (2A) -> Y : Goto 3 : Else : Goto 3 : Lbl E : ClrHome : Ausgang (4,5 "Discr <0 : Pause : Goto 5 Marks: 1. Platzieren Sie diese Zeile direkt unterhalb der Befehl getKey führt zu einer schnelleren Reaktion des Programms, denn sie fragt sofort für einen neuen Schlüssel, anstatt der Überprüfung aller die folgende Sachen zuerst, was ist ziemlich nutzlos wäre. 2. (K = 25) und (K = 34) sind Bedingungen. Diese Bedingungen haben Wert 1, wenn wahr, und den Wert 0, wenn nicht. Dies ist ein kurzer Schreibweise Zustand. 3. Z kann nicht 3 sein, so dass, wenn es bis zu zählen und zu erreichen 3, geht es sofort auf 0. 4. Z darf nicht negativ sein, so dass, wenn es nach unten zählen würde und erreichen einen Wert unter 0 ist, geht es sofort in 2. 5. Wenn Taste 22 gedrückt wird (MODE / ENDE) wird das Programm den Bildschirm (ClrHome) Löschen und beenden, weil es sonst erreicht, ohne vorher Erreichen einer Goto-Befehl. 6. = / sollte die 'nicht' Zeichen, indem Sie 2., MATH und dann die zweite Option zu finden sein. Ich kann leider nicht geben Sie es. 7. Ich weiß nicht, der Grund, warum die Else und Goto 3 Befehle muss dort platziert werden, aber wenn sie nicht dort platziert sind, wird das Programm beendet. Was tut es? Dieses Programm zeigt diesen Bildschirm: A = 0 B = 0 C = 0 DISCR = 0 X = 0 ODER X = 0 Wenn Sie möchten nach oben nach unten drücken oder werden A, B und C-Positionen zu wechseln. Drücken Sie führt dazu, dass der obere, auf den Boden und der Mitte ein bis in den oberen Teil (Tannen B, dann C, dann A) Geh. Drücken bewirkt, dass der die untere, um nach oben und der oberen ein bis in die Mitte gehen (Tannen C, dann A, dann B) zu gehen. Auf diese Weise können diese drei Buchstaben drehen. Wenn Sie ENTER drücken es wird Sie für einen Wert der oberen man fragen. Geben Sie einen Wert und drücken Sie Enter. Jetzt können Sie die drei Buchstaben wieder zu drehen. Wenn alle drei Briefe bekam einen Wert, der nicht 0 ist, wird das Programm die Werte der Diskriminanzfunktion und beide Möglichkeiten für X. Nun müssen Sie noch drehen kann, eingeben und ändern die Werte von A, B und C zu machen, berechnen Sie die Diskriminante und sowohl X für einen anderen Wert von A, B oder C. Wenn Sie MODE drücken / BEENDEN wird das Programm zu beenden. Wenn Sie möchten Werte für A, B und C, die dazu führen würde, die Diskriminante negativ geben, das Programm eine Fehler geben würde, weil es sich nicht nehmen die Quadratwurzel aus einer negativen Zahl. Ich legte eine zusätzliche Funktion im Programm, die das Programm nicht auf einen Fehler geben, verursachen wird, sondern machen es die Tatsache, dass die Diskriminante kleiner als 0. Danach müssten Sie Enter drücken wird angezeigt und alle Werte zurückgesetzt werden 0. Schritt 8: Binary Hier ist ein Programm, das normale Zahlen in binären Zahlen verwandeln kann. Hör zu: : Lbl A : ClrHome : Input "NUMBER", A : Wenn A <0: Gehe zu A : 12-> X: 0-> Z : Während 1 : X-1-> X: A-2 ^ X> B : Wenn B <0: End : Z + 10 ^ X> Z : Wenn B = 0: Goto Z : B-> A :Ende : Lbl Z : Disp "Binärzahl", Z : Pause : ClrHome : Menü ("? Eine andere Nummer", "JA", A, "NEIN", B : Lbl B Was tut es? Dieses Programm ist ein hübsches kleines Programm, aber es funktioniert völlig in Ordnung. Denn es macht nicht bitten Sie für eine Reihe und, sobald es eingegeben wird, wird sie berechnet, es ist binär Zwillinge. Es ist ziemlich einfach. Wenn Sie möchten, müssten Sie, können Sie herausfinden, wie es funktioniert genau mit einigen gut aussehend. Es gibt nur eine Sache, die ich brauche, darauf hinzuweisen: Sie darf nicht in eine Zahl größer als 1024, denn dann wird das Programm die wissenschaftliche Schreibweise für die binäre Zahl, die dazu führen wird das Programm unzutreffend wird verwenden. Schritt 9: Bouncer Hier ist ein Programm habe ich nicht kommen mit mir, aber im Web gefunden. Es ist eine Art von Bildschirmschoner namens Bouncer. Schau mal: : ClrDraw: AxesOff : randInt (0,62-> A : randInt (0,94-> B : 1-> C: 1-> D : Während 1 : A + C> A: B + D> B : Pxl-Change (A, B : Wenn A = 0: 1-> C : Wenn A = 62: 1-> C : Wenn B = 0: 1-> D : Wenn B = 94: -1-> D :Ende Was tut es? Dieses Programm verwendet die Grafikanzeige. Es zieht eine diagonale Linie über den Bildschirm, beginnend an einem zufälligen Stelle auf dem Bildschirm. Wenn es um den Rand des Bildschirms kommt, wird es abprallen und gehen Sie in eine andere Richtung. Auf diese Weise wird die Bildschirmfarbe und dann wieder zu löschen sich. Es ist ziemlich Spaß, Ihre Freunde mit zu beeindrucken. Schritt 10: Chatbot Dies ist die wichtigste Einrichtung für eine chatbot. Real Simple tatsächlich. : ClrHome : Disp "Willkommen in der", "chatbot FÜR TI Zeichen 1 : Während 1 : Input "", Str1 Zeichen 2 : ... Mark 3 :Ende Marks 1. Dies ist nur einige Begrüßungstext. Geben Sie hier, was Sie wollen. Oder einfach nur diese Zeile löschen. Überzeugen Sie sich selbst. 2. Str 1 ist eine Variable. Es ist in meinen Anfänger instructable erläutert. Grundsätzlich speichert Text. 3. Geben Sie hier eine Wechselwirkung Sie den Rechner machen wollen. Zum Beispiel geben Sie dies: : Ist str1 = "HALLO : Disp "HY Was tut es? Dieses Programm im Grunde hält warten auf Sie Text eingeben. Wenn Sie das tun, wird es seine "Katalog" zu überprüfen. Wenn Sie "gelernt" haben sie den Text, wird es genau das tun, was Sie gelernt haben, es zu tun. Werfen wir einen Blick auf das Beispiel. Wenn Sie geben HALLO möchten, wird der Rechner mit HY reagieren. Sie dürfen nicht vergessen, die Anführungszeichen, weil sonst diese nicht funktionieren. Sie können lernen, wie viele Dinge, wie Sie wollen, und sprechen Sie mit ihm, wenn Sie sich langweilen. Falls der Rechner nicht die von Ihnen eingegebene Text nicht weiß, wird es nur für einen anderen Text zu stellen und zu ignorieren, was Sie gesagt haben. Hier sind einige weitere Beispiele für Dinge, die man lernen könnte: : Ist str1 = "STOP :Stopp : Ist str1 = "HALLO": Dann : randInt (0,3) -> A : Wenn A = 0: Disp "HY : Wenn A = 1: Disp "Grüße : Wenn A = 2: Disp "Goodday : Wenn A = 3: Disp "HALLO :Ende : Else : Ist str1 = "Wie spät ist es? : getTime : Ist str1 = "open ABC : prgmABC Schritt 11: Pranks Selbstverständlich können auch Durcheinander mit Taschenrechner Ihr Freund Sie. Hier sind zwei lustige Programme. Sie sind leicht zu auf einem Rechner Freunden zu machen. Hier ist die erste: : ClrHome : Disp: "Ihren Taschenrechner", "wurde gesperrt", "", "Code eingeben: : Lbl A : Input "", X : Wenn X = 23 : Goto B : Gehe zu A : Lbl B : Input "", X : Wenn X = 11 : Goto C : Gehe zu A : Lbl C : Input "", X : Wenn X = 1995 :Stopp : Gehe zu A Was tut es? Dieses Programm wird Ihnen sagen, Ihre Rechner blockiert wurde. Weiter wird es Sie nach einem Code fragen. Der Code ist in diesem Fall 23-11-1995. Wie Sie sehen können, es ist ein Datum. Müssen Sie zunächst auf 23 geben Wenn Sie nicht, es wird wieder an Sie eine Nummer, die Sie eingeben, bis 23. Nachdem Sie 23 eingetragen tun, wird es Sie nach einem anderen Nummer fragen. Wenn Sie 11 eingeben, wird es weitergehen, und bitten Sie um eine weitere Nummer (1995), aber wenn Sie nicht tun, wird es zurück an den Anfang gehen und fragen, die Sie für 23 erneut. Wenn Sie alle drei Zahlen in Zeile korrekt eingeben, wird das Programm zu beenden und Ihren Rechner wird entsperrt werden. Die lustige Sache dieses Programms ist, dass Sie nicht sehen können, wenn es gefragt, für den ersten, zweiten oder dritten Reihe, damit andere nicht einmal, Sie zu 3 verschiedenen Nummern (wenn Sie ihnen sagen) eingeben müssen. Sie können jeden Code eingeben. Wenn Sie möchten dieses Programm auf Rechner jemand anderes machen, versuchen ihren / seinen Geburtstag. Es ist ihr Code und sie werden den Code kennen, aber sie werden nicht wissen, dass ist der Code. Es gibt nur eine Sache, ein wenig enttäuschend, über dieses Programm. Sie könnten leicht beenden Sie das Programm durch Drücken auf. Das Programm wird angehalten und die Möglichkeit geben, zu beenden. Drücken Sie zu verlassen und sich der Rechner nicht blockiert ist, ohne Eingabe des Codes. By the way, das funktioniert mit jedem Programm. Hier ist das zweite Programm: : ClrHome : Während 1 : Input "", A : randInt (A-10, A + 10) -> A : Disp A :Ende Was tut es? Dieses Programm ist noch kürzer und daher leichter zu schnell auf eine Freunde-Rechner machen, ohne ihn / sie dies bemerkt. Wenn Sie dieses Programm ausführen, Ihr Freund wird nicht den Unterschied mit dem Rechner, der seine normale Arbeit. Ihr Freund wird eine Frage geben, zum Beispiel zu nehmen 23-4. Die richtige Antwort ist natürlich 19, aber der Rechner eine zufällige Antwort zwischen 19-10 = 9 und 19 + 10 = 29 an. Es besteht die Möglichkeit von 4,76% die Antwort der Rechner gibt wird die richtige Antwort, so wird es wohl falsch sein. Achten Sie darauf, diesen Trick kurz vor einem Mathetest zu ziehen, denn das könnte Ihre Freunde Grade, die unfair zu ruinieren. Schritt 12: Umbenennen / Löschen eines Programm Wie Sie vielleicht wissen, können Sie ein Programm nicht umbenannt werden. Auch wenn Sie ein neues Programm zu machen und kopieren Sie den Inhalt des Programms würden Sie wollen, um das neue Programm umzubenennen. Angenommen, Sie haben meine ABC-Programm, aber Sie können es mit dem Namen ABCD. Jetzt können Sie es haben wollen genannte ABC werden. Sie müssen ein neues Programm namens ABC zu machen. Drücken Sie dann RCL (2, STO). Drücken Sie PRGM, linken und Sellect ABCD. Drücken Sie die Eingabetaste und erneut eingeben. Für den Inhalt der ABCD wird auf ABC coppied werden. Sie haben nun zwei Programme, die beide das gleiche tun. Sie wollen wahrscheinlich ABCD löschen. Um dies zu tun, drücken Sie MEM (2., +), unten, einzugeben, geben. Jetzt Sie sehen eine Liste aller auf Ihrem Rechner gespeichert. Sellect ABCD, das Programm, das Sie löschen möchten, und drücken Sie Löschen. Jetzt ist Ihr Programm wird gelöscht:) Schritt 13: Unterprogramme Wenn ein Programm schreiben, können Sie auf andere Programme als Unterprogramme aufrufen. Um dies zu tun, bearbeiten Sie ein Programm, drücken Sie PRGM, links und wählte das Programm, das Sie auf anrufen möchten. Wenn Sie die Taste geben Sie die nächste Zeile zu sehen: : prgmname Wenn das Programm, das Sie gerade editting sieht diese Zeile, wird es Programmbezeichnung und, sobald es mit NAMEN finnished, wird es weiter mit dem ersten Programm, dort, wo es links of.Step 14: Archiv Wie Sie vielleicht wissen, hat Ihr Rechner zwei Speicher: RAM und Archiv. Es ist RAM-Speicher ist, es ist Hauptspeicher und Arbeitsspeicher. Wenn Sie ein Programm, Bild, Liste oder eine andere Variable zu speichern, wird es auf den RAM-Speicher gespeichert werden. Leider, wenn Sie eine Menge von Programmen vorgenommen, werden Sie sehen, der RAM-Speicher ist relativly klein. Sie können jedes Programm oder das Bild, indem Sie auf MEM zu archivieren, Mem Mgmt / Del ..., Alle ... Wählen Sie das Programm / Bild, das Sie archivieren und drücken Sie die Eingabetaste. Das Programm wird auf dem Archiv gespeichert werden, anstelle des RAM-Speichers. Dies wird in der Taschenrechner nicht nur schneller zur Folge haben. Sobald ein Programm auf dem Archivspeicher abgelegt, können Sie es nicht ausführen, noch bearbeiten. Bilder können nicht zurückgerufen werden, noch gespeichert. Um sie aus dem Archiv entfernen, nur um in der Liste zu gehen, wählen Sie das Programm, das Sie aus dem Archiv entfernen, und drücken Sie die Eingabetaste. Sie können auch zum Katalog (2, 0) zu gehen und sellect die Archive oder dearchivieren Befehl. Diese Befehle nicht mit Programmen arbeiten, aber sie mit Bildern zu arbeiten. Wählen Sie einen solchen Befehl, und drücken Sie dann VARS, Fotos und wählte das Bild, das Sie wollen, (un) Archiv. Drücken Sie die Eingabetaste, um es auszuwählen, und drücken Sie erneut eingeben zu (un) zu archivieren. Sobald ein Programm oder ein Bild wird archiviert, wird ein kleiner Stern vor dem Namen des Programms oder picture.Step 15 angezeigt: Sichern Ihrer Rechner Natürlich gibt es immer diese bösen Jungs, die Ihren Rechner zurückzusetzen, so dass Sie jedes einzelne Programm, das Sie gemacht werde verlieren. Nun, keine Sorgen. Es gibt einen Weg, um ein Backup von Ihrem TI zu machen und wieder alle Programme am selben Tag, dass böse Kerl gelöscht ihnen. Ein kostenloses Programm, das wirklich einfach zu bedienen ist, ist TI verbinden. Sie können dieses Programm downloaden hier. Zuerst wählen Sie Anzeige auf der rechten Seite des Bildschirms "TI Connect for Mac", wenn Ihr mit einem Mac oder 'TI Connect for Windows ", wenn Ihr mit einem PC. Dann wählen Sie Ihre bevorzugte Sprache aus und drücken Sie auf "Weiter als Gast". Dann starten Sie den Download und installieren Sie das Programm. Sobald es installiert ist, öffnen Sie das Programm. Ein kleiner Bildschirm öffnet sich mit 7 verschiedenen Optionen: TI Device, TI Screencapture, Backup, Restore, TI Dataeditor, TI Device und Entdecken Meine TI Daten. Aus all diesen Optionen gibt es nur zwei, die Sie ohne eine weitere Software installieren können. Diese beiden sind Backup und Restore. Verbinden Sie zunächst Ihren TI, um Ihren Computer mit dem USB-Kabel mit dem Rechner habe. Wählen Sie dann Backup (oder drücken Sie b), um eine Sicherungskopie Ihrer TI zu machen. TI verbinden beginnt sofort, eine TI mit dem Computer verbunden zu suchen. Wählen Sie die richtige Rechner und wählen Sie in dem Sie die Sicherung gespeichert werden, wie man es und was Sie sichern möchten nennen möchte: die Apps, dem Archiv oder dem Stößel oder einer beliebigen Kombination. Drücken Sie OK und der Computer startet das Sichern Ihrer TI. Um die Sicherung auf dem TI schließen Sie das TI an den Computer und wählen Sie Wiederherstellen (oder drücken Sie r) wiederherzustellen. Auch hier wird es sofort damit beginnen, für einen angeschlossenen TI suchen. Wählen Sie das TI und wählen Sie, wenn Sie die Anwendungen, das Archiv, den Widder oder eine beliebige Kombination von diesen wiederherstellen möchten. Wählen Sie dann die Sicherung, die Sie auf Ihrem Rechner wiederherstellen möchten, und drücken Sie OK. Warten Sie ein paar Sekunden (je nachdem, wie viel Programme und Apps und so muss es zu kopieren) und fertig.
4x4x4 LED CUBE
7 Schritt:Schritt 1: Erforderliche Grundkenntnisse und Teile benötigt Schritt 2: LEDs und die Kunst der Multiplex !! Schritt 3: Löten (oder Butte: P) Schritt 4: Erstellen Sie den Cube Schritt 5: Fast fertig !!, den Anschluss des Arduino Schritt 6: Die coduino !! Schritt 7: Einfache Anpassung.
Es gibt keinen Mangel der instructables über LED CUBE aber wenn es um begginer, die ein Projekt machen will, kommt es wirklich ärgerlich, weil die anderen instructables sind mehr oder weniger fortschrittlichen, die eine begginer (wie mich: P) demoralisiert. Diese instructable ist ganz anders als die anderen: - 1.Working direkt mit Arduino (ohne Widerstände, Decoder, IC oder Schieberegister usw.) 2.Cheap und leicht (Voraussichtliche Kosten Rs-255 (5-6 $) + Arduino) 3.Easily anpassbare Code mit Online-Editor für alle Würfel (hier bin ich focuusing auf 4x4x4-Würfel, aber der Code kann leicht für 'n' bearbeitet werden, Anzahl der Schichten) Bevor ich voran gehen hier eine kleine Video-i gemacht Meine Antworten auf Make-to-learn-Jugendwettbewerb Was haben Sie zu machen? Ich habe erstellt ein DIY 4X4X4 LED-Matrix Cube arbeiten direkt mit Arduino.The beste Teil ist, es ist billig. leicht zu machen und kann leicht mit den Bibliotheken angepasst werden und bietet einen unglaublichen Animationseffekt. Wie haben Sie zu machen? Ich war gerade Stolpern auf einige cool zu machen. Zeug, sah ich ein Video auf YouTube und studiert, was sonst getan werden kann, ist nicht nur einfach und anpassbar zu machen, studierte ich eine Menge über die Mikrocontroller ihre Arbeits, Codierung hinter sich und das Beste, was ich in diesem Projekte liebte, war Löten, zuvor hatte ich keine Ahnung, dafür. Wo hast du es schaffen? Ich habe es bei mir zu Hause, ich habe die Sachen nämlich LEDs, Arduino, Löten Sachen etc vom Markt und tat Rest der Arbeit zu Hause! Was hast du gelernt? Ich habe gelernt, dass, wie cool Elektronik kann und es ist deployation im täglichen Leben, Außer, dass ich die Exposition gegenüber Arduino, LEDs, Löten, die Arbeit mit Schaltungen, PCB und Hacking-elektronische Produkte, um in Tag-zu-Alltag zu verwenden. Schritt 1: Erforderliche Grundkenntnisse und Teile benötigt Ich werde es halten Sie es so einfach wie möglich, obwohl es bestimmte Voraussetzungen, gehen Sie vor, um zu machen. 1.One muss gut mit Arduino ausgestattet werden und sollte mit ihr vertraut funktioniert 2.GRUNDLEGENDE Kenntnis von Schaltungen und Elektronik (zB wie man Multimeter etc. verwenden) 3.Last but not least, sollte man ein wenig darüber wissen, Löten PS: Bevor Sie dieses Projekt hatte ich keine Ahnung von Löt- und schraubte ich mich oft, Brennen meinem Tisch, meine Hand und falsche soldering.So stellen Sie bitte sicher, dass Sie eine gute Vorstellung davon, Löten und bitte "SICHER" Nach all dieser kostenlose Beratung: P, lassen Sie uns den benötigten Teile zu kommen: - 1. Arduino (offensichtlich der Master Geist unserer Würfel) 2.64 LEDs (jede Farbe funktionieren würde, um es viel hübscher Nutzung RGB-LEDs zu machen) 3.1-2 Lochplatine (oder PCBs) 4.Soldering Kit (jemand funktionieren würde, bekam ich eine billige) 5. Wires (versch. Farben wäre es viel einfacher zu machen) 6.Some craft Drähte Schritt 2: LEDs und die Kunst der Multiplex !! Ich beschloss, dieses instructable tun, nachdem ich schon gemacht mir, damit ich nicht habe meinen eigenen Bildern Die Schritte sind jedoch genau die gleiche Um die LEDs zu verwenden, zuerst biegen Sie die Kathode (ve, in der Regel die kürzere) senkrecht zur Anode (+ ve) Tun Sie dies mit allen 64 LEDs Making the grid: - Zur Herstellung der Würfel, wird man sich Grid ersten zu machen, um die Aufgabe ohne große Anstrengungen zu tun. Finden Sie ein Holzbrett oder sogar einen Karton und stellen Sie die Löcher wie im Bild entsprechend der Größe der LEDs angezeigt. VERSTEHEN MULTIPLEXING: - Betrachten wir einen Fall, wenn jemand fragt, zu 64 LEDs einzeln zu steuern, pfui! ekelhaft !! ... für jede LED, wird ein Draht benötigt werden und somit die Komplexität der Schaltung erhöht. Jedoch mit dieser Technik der Multiplex wird der Würfel in 4 Schichten aufgeteilt 1.LEDs in vertikalen Spalte Anteil gemeinsame Anode (+ ve) 2.LEDs auf einer horizontalen Ebene sind gemeinsame Kathode (-ve) Nun, wenn ich zu leuchten die LED in der linken oberen Ecke auf der Rückseite Ich liefere nur GND wollen (-), um die obere Schicht und VCC (+), um die Spalte in der linken corner.Step 3: Löten (oder Butte: P) Löten ist ein Stück Kuchen, es ist so einfach wie die Anwendung Butter auf Schwarzbrot, wenn es sorgfältig getan wird. Sie brauchen eine helfende Hand (sofern Sie nicht eine dritte Hand, oops schlechter Witz: D) zu löten die individuall LEDs dh Kathode zur Kathode in einem Raster, entweder engagieren jemand mit Ihnen in diesem Prozess oder einfach nur benutzen Krokodilklemmen , aber die Clips heißer nach einer Weile und kann Ihnen schaden (wenn auch nicht viel), so ist es besser, Kunststoff-Clips verwenden. PPS-er erste Bild ist nicht von mir, wie mein Löten ist nicht perfekt, aber eigentlich nach dem Löten die Schicht sollte es so aussehen. Nachdem die erste Schicht geben ihm eine starre Struktur fügen Sie einige Handwerk Draht es besser, zu löten. Nach dem Herstellen der ersten Schicht, weiterhin mit anderen Schichten, geben ihnen eine starre Struktur und zu stoppen, wenn Sie vier Schichten abgeschlossen haben. !! Schritt 4: Erstellen Sie den Cube Wir sind fast fertig, aber jetzt kommt ein wenig komplexer Prozess des Lötens die Schichten miteinander. Beginnen Sie mit den Ecken und löten der Ebene together.After Löten die vier Ecken gehen, um mittlere und löten Sie die verbleibenden Punkte, aber stellen Sie sicher, dass Sie Anoden löten Anode. Nach dem Löten zwei Schichten sicherzustellen, dass sie gut workng, setzen Sie Ihre Multimeter-Sonde und sehen, ob sie arbeiten oder nicht !! Bilder machen es klarer. Nachdem der Würfel setzen Sie den Würfel in Lochplatine, die nicht easyso ist darauf zu achten, bevor Sie sie in das Brett, können Sie wieder brauchen hier eine Portion oder mehr helfende Hände. Schritt 5: Fast fertig !!, den Anschluss des Arduino Hier kommt es wir sind fast fertig, wir müssen nur die die Drähte von Cube zu Arduino setzen. Es gibt 14 digitalen Stifte (0-13) auf Arduino Board, gehen Sie vor und schließen Sie die Spalten drüben. Abgesehen davon haben wir 6 analoge Stifte dh A0-A5, schließen Sie andere Spalten und Schichten gibt. Auf den ersten der Verkabelung kann einige überfüllten Bereich aussehen, aber es funktioniert gut, so weit wie Kreis concerned.Step 6: Die coduino !! Für eine begginner es ist nicht einfach, den Code von Grund auf neu zu schreiben, aber eine Sache, die jeder tun kann, ist auf jeden Fall individuell mit dem Code, Hier ist ein Code von make magzine, die leicht angepasst werden können #include <avr / pgmspace.h> // ermöglicht die Verwendung von PROGMEM, Muster in Flash speichern #define CUBESIZE 4 #define PLANESIZE CUBESIZE * CUBESIZE #define PLANETIME 3333 // Zeit jeden Ebene ist in uns angezeigt -> 100 Hz #define ZEITKONST 20 // Displaytime multipliziert, um ms bekommen - warum nicht = 100? // LED-Muster-Tabelle in PROGMEM - letzte Spalte ist Anzeigezeit in 100ms-Einheiten // TODO könnte dies viel kompakter, aber nicht mit binären Muster Darstellung sein prog_uchar PROGMEM PatternTable [] = { // Blinken ein und aus B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0011, B0000, B0000, B0000, B0011, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0011, B0010, B0000, B0000, B0011, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0011, B0011, B0000, B0000, B0011, B0011, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0110, B0110, B0000, B0000, B0110, B0110, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0110, B0110, B0000, B0000, B0110, B0110, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0110, B0110, B0000, B0000, B0110, B0110, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0110, B0110, B0000, B0000, B0110, B0110, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0011, B0011, B0000, B0000, B0011, B0011, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0001, B0011, B0111, B0000, B0001, B0011, B0111, B0000, B0000, B0001, B0011,10, B0000, B0000, B0000, B0000, B0000, B0011, B0111, B0111, B0000, B0011, B0111, B0111, B0000, B0001, B0011, B0111,10, B0000, B0000, B0000, B0000, B0000, B0111, B0111, B0111, B0000, B0111, B0111, B0111, B0000, B0011, B0111, B0111,10, B0000, B0000, B0000, B0000, B0000, B0111, B0111, B0111, B0000, B0111, B0111, B0111, B0000, B0111, B0111, B0111,10, B0000, B0000, B0000, B0000, B0000, B1110, B1110, B1110, B0000, B1110, B1110, B1110, B0000, B1110, B1110, B1110,10, B0000, B1110, B1110, B1110, B0000, B1110, B1110, B1110, B0000, B1110, B1110, B1110, B0000, B0000, B0000, B0000,10, B0000, B1110, B1110, B1110, B0000, B1110, B1110, B1110, B0000, B1100, B1110, B1110, B0000, B0000, B0000, B0000,10, B0000, B1110, B1110, B1110, B0000, B1100, B1110, B1110, B0000, B1000, B1100, B1110, B0000, B0000, B0000, B0000,10, B0000, B1100, B1110, B1110, B0000, B1000, B1100, B1110, B0000, B0000, B1000, B1100, B0000, B0000, B0000, B0000,10, B0000, B1000, B1100, B1110, B0000, B0000, B1000, B1100, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B0000,10, B0000, B0000, B1000, B1100, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B1000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B1000, B1000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1000, B1000, B1000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1100, B1000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1110, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1110, B0000, B0000, B0000, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0110, B0000, B0000, B0000, B0011, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0010, B0000, B0000, B0000, B0011, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0011, B0001, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0001, B0001, B0001, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0001, B0001, B0011, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1110, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1100, B0000, B0000, B1000, B1000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1000, B0000, B0000, B1100, B1000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1110, B1000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1111, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0111, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0001, B0011, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0001, B0001, B0000, B0001, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0001, B0000, B0000, B0011, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0111, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1111, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1110, B1000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1100, B1100, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1000, B1110, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1111, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0111, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0011, B0000, B0000,10, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000,10, B0001, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0000, B0000, B0000,10, B0011, B0001, B0000, B0000, B0000, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0111, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1110, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B0001, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B0011, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B0111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1100, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1110, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0111, B0111, B0111, B0111, B1000, B1000, B1000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0011, B0011, B0011, B0011, B0100, B0100, B0100, B0100, B1000, B1000, B1000, B1000, B0000, B0000, B0000, B0000,10, B0001, B0001, B0001, B0001, B0010, B0010, B0010, B0010, B0100, B0100, B0100, B0100, B1000, B1000, B1000, B1000,10, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0010, B0010, B0010, B0010, B0100, B0100, B0100, B0100,10, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0010, B0010, B0010, B0010,10, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001, B0001,10, B0010, B0001, B0001, B0001, B0010, B0001, B0001, B0001, B0010, B0001, B0001, B0001, B0010, B0001, B0001, B0001,10, B0100, B0010, B0001, B0001, B0100, B0010, B0001, B0001, B0100, B0010, B0001, B0001, B0100, B0010, B0001, B0001,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100,10, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100,10, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100,10, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100,10, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100,10, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100,10, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010, B0100, B0100, B0010, B0010,10, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001, B1000, B0100, B0010, B0001,10, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000, B0000, B1100, B0011, B0000,10, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000, B0000, B0011, B1100, B0000,10, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0000, B0010, B0100, B0000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0000, B0000, B0000, B0000, B0000, B0010, B0100, B0000, B0001, B0010, B0100, B1000, B0001, B0010, B0100, B1000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0100, B0000, B0001, B0010, B0100, B1000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0010, B0100, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1000, B0000, B0010, B0000, B1000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B1000, B0000, B0010, B0000, B1000, B0000, B0010, B1000, B0000,10, B0000, B0000, B0000, B1000, B0000, B0010, B0000, B1000, B0000, B0010, B1000, B0000, B0000, B0000, B1000, B0000,10, B0000, B0010, B0000, B1000, B0000, B0010, B1000, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0010, B1000, B0000, B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B1000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0100, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0110, B0110, B0000, B0000, B0100, B0010, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1001, B0110, B0110, B1001, B0000, B0110, B0110, B0000, B0000, B0100, B0010, B0000, B0000, B0000, B0000, B0000,10, B1101, B0111, B1110, B1011, B1001, B0110, B0110, B1001, B0000, B0110, B0110, B0000, B0000, B0100, B0010, B0000,10, B1111, B1111, B1111, B1111, B1101, B0111, B1110, B1011, B1001, B0110, B0110, B1001, B0000, B0110, B0110, B0000,10, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1101, B0111, B1110, B1011, B1001, B0110, B0110, B1001,10, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1101, B0111, B1110, B1011,10, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111,10, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B1111, B1111, B1111, B1111, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000,10, // Das ist ein Dummy-Element für Tabellenende (Laufzeit = 0) aka !!! BERÜHREN SIE NICHT !!! B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 0 }; / * ** Definition von Pins in der Anordnung erleichtert es, neu anordnen, wie Cube wird verdrahtet ** Stellen Zahlen hier bis LEDs blinken, um - L zu R, T nach B ** Beachten Sie, dass Analogeingänge 0-5 sind auch digitale Ausgänge 14-19! ** Pin DigitalOut0 (serielle RX) und AnalogIn5 sind offen für zukünftige Anwendungen verlassen * / int LEDPin [] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; int PlanePin [] = {16, 17, 18, 19}; // Initialisierung Leere setup () { int Stift; // Schleifenzähler // Up LED-Pins als Ausgang gesetzt (aktiv HIGH) für (Pin = 0; pin <PLANESIZE; pin ++) { pinMode (LEDPin [Stift], output); } // Up Ebene Pins als Ausgänge (aktiv LOW) gesetzt für (Pin = 0; pin <CUBESIZE; pin ++) { pinMode (PlanePin [Stift], output); } } // Anzeigemuster in der Tabelle, bis Displaytime Null ist (dann wiederholen) Leere Schleife () { // Variablen zu deklarieren Byte PatternBuf [PLANESIZE]; // Spart Strommuster aus PatternTable int PatternIdx; Byte-Displaytime; // Zeit * 100ms bis Muster anzuzeigen unsigned long EndTime; int-Ebene; // Schleifenzähler für cube refresh int patbufidx; // Indizes, die Byte aus Musterpuffer int ledrow; // Zählt LEDs in Refresh-Schleife int ledcol; // Zählt LEDs in Refresh-Schleife int ledpin; // Zählt LEDs in Refresh-Schleife // Initialize PatternIdx zu Beginn der Mustertabelle PatternIdx = 0; // Schleife über Einträge in der Mustertabelle - während Displaytime> 0 machen { // Muster aus PROGMEM lesen und speichern im Array memcpy_P (PatternBuf, PatternTable + PatternIdx, PLANESIZE); PatternIdx + = PLANESIZE; // Displaytime von PROGMEM und Schrittweite Index gelesen Displaytime = pgm_read_byte_near (PatternTable + PatternIdx ++); // Berechnen EndTime vom aktuellen Zeit (ms) und Displaytime EndTime = millis () + ((unsigned long) Displaytime) * ZEITKONST; // Schleife, während Displaytime> 0 und die aktuelle Uhrzeit <EndTime while (millis () <EndTime) { patbufidx = 0; // Index-Zähler zu Beginn der Puffer zurückgesetzt // Schleife über Flugzeuge für (Ebene = 0; Ebene <CUBESIZE; Ebene ++) { // Auszuschalten vorherigen Ebene if (Ebene == 0) { digital (PlanePin [CUBESIZE-1], HIGH); } Else { digital (PlanePin [Flugzeug-1], HIGH); } // Laststrom Ebene Musterdaten in Häfen ledpin = 0; für (ledrow = 0; ledrow <CUBESIZE; ledrow ++) { für (ledcol = 0; ledcol <CUBESIZE; ledcol ++) { digital (LEDPin [ledpin ++], PatternBuf [patbufidx] & (1 << ledcol)); } patbufidx ++; } // Einzuschalten aktuellen Ebene digital (PlanePin [Ebene], LOW); // Verzögerung PLANETIME uns delayMicroseconds (PLANETIME); } // Zum Flugzeug } // Während <EndTime } While (Displaytime> 0); // Muster lesen, bis Zeit = 0, das Ende signalisiert } In dem obigen Code alle 0 reprents ab und jede 1 für ON.Step 7: Einfache Anpassung. Um den Code zu einem fertigen Sie brauchen nur zu ändern, was auch immer in der Anordnung Es gibt viele Online-Tools, die den erforderlichen Code zur Verfügung und machen es für alle Animationen einfach. das eine ist: - LED-Code-Generator
Wie machen und zu verkaufen eine iPhone App ohne Programmierkenntnisse !!
10 Schritt:Schritt 1: Schritt 1 Schritt 2: Schritt 2 Schritt 3: Schritt 3 Schritt 4: Schritt 4 Schritt 5: Schritt 5 Schritt 6: Schritt 6 Schritt 7: Schritt 7, 8 und 9 Schritt 8: Schritt 10 Schritt 9: Schritt 11 Schritt 10: Schritt 12
Dies ist ein einfaches Verfahren zur Herstellung von Ihrem iPhone zu Hause zu sitzen, ohne jede Vorkenntnisse in Programmierung. Folgen Sie einfach alle Anweisungen und Sie werden dafür bezahlt, zu Hause zu sitzen. : D Bitte bewerten Sie diese Instructable und folge mir für mehr coole Schritt für Schritt-Anleitungen. Hergestellt von Manish Kumar und Kayhan Feroze Qaiser Schritt 1: Schritt 1 Zur Website von Apple und registrieren Sie sich als Entwickler kostenlos. Sie müssen eine E-Mail-Adresse ein. http://developer.apple.com/programs/register/Step 2: Schritt 2 Sobald Sie das Konto Anmelden auf sie gemacht haben und klicken Sie auf "Download Xcode". Dies ist das Programm, das Sie die App in zu machen. (Die Datei ist sehr groß, so kann es ein paar Stunden dauern zum Download). Nach dem Download installieren Xcode.Step 3: Schritt 3 Besuchen Sie die Website Sparrow und klicken Sie auf Download. http://www.sparrow-framework.org/ Folgen Sie den Anweisungen sehr sorgfältig und stellen Sperling. Sparrow ist ein Framework, mit dem Programmierprozess vereinfacht, indem es kürzer, schneller und einfacher understand.Step 4: Schritt 4 Verstehen grundlegende Programmierkonzepte wie Variablen, Schleifen, Funktionen und mathematische Verfahren. Diese können Sie Google und finden Sie heraus, die Grundlagen von jeder Website. Dieser Link sollte Ihnen den Einstieg erleichtern: - http://cisnet.baruch.cuny.edu/holowczak/classes/programming/ Lesen Sie die ersten Konzepte und Schlaufe an der "C-Sprache" Beispiele, denn das ist, was werden Sie die Programmierung in.Step 5: Schritt 5 Besuchen Sie den Spatz Wiki und gehen Sie durch die Dokumentation zu verstehen, wie Spatzen zu verwenden. http://wiki.sparrow-framework.org/ Dann gehen Sie durch ihre Tutorials, dies in action.Step 6 zu sehen: Schritt 6 Besuchen Sie diese Seite für eine umfassende aber dennoch einfache Anleitung für ein Arbeitsspiel. http://maniacdev.com/2010/08/beginners-iphone-action-game-tutorial/ Gehen Sie durch das Tutorial und zu verstehen, jeden Schritt. Danach laden Sie das Tutorial und öffnen Sie sie mit Xcode. Führen Sie es aus und sehen, sie in Aktion. Versuchen Sie, und den Code, um das Spiel zu ändern und die Ergebnisse sehen. Basteln mit diesem, bis Sie denken, dass Sie verstanden haben, wie alles ist working.Step 7: Schritt 7, 8 und 9 7. Wenn Sie irgendwelche Verwirrungen besuchen Sie die sparrow Forum zu jeder Zeit. Hier finden Sie viele Fragen finden zuvor gebeten, und Sie können Ihre eigenen Fragen. das Forum ist sehr aktiv und Sie werden schnelle und detaillierte Antworten zu bekommen. 8. Geben Sie nicht einfach, weil Sie viele, viele Fehler zu machen und kann Stunden damit verbringen, nur immer ein Bild auf dem Bildschirm angezeigt. 9. Wenn Sie eine Anwendung, die Sie denken, Sie im App Store Log in Ihr Apple Developer Account zu verkaufen und sich für ihre bezahlten Entwickler-Programm gemacht haben. Dies wird 99 Dollar kosten im Jahr und ermöglicht es Ihnen, Anwendungen im App Store zu verkaufen. Füllen Sie die Form sorgfältig durch und folgen Sie den Anweisungen. Sie müssen sich 18 in den meisten Ländern sein, einen Vertrag zu schließen. So lesen Apples Vorgaben carefullly. Wenn Sie minderjährig sind haben ein Elternteil geben Sie das Programm für Sie. Es ist ein Vertrag für den Verkauf bezahlt Anwendungen und kostenlose Anwendungen. Wenn Sie kostenpflichtige Anwendungen verkaufen, benötigen Sie ein Bankkonto von Apple können Sie Ihre Gewinne zu senden. Schritt 8: Schritt 10 Folgen Sie den instuctions auf dieser Seite, um Ihre Anwendung auf einem echten iPhone oder iPod zu testen. Dies sollten Sie vor dem Hochladen auf den App Store zu tun. http://mobiforge.com/developing/story/deploying-iphone-apps-real-devicesStep 9: Schritt 11 Folgen Sie den instuctions Sie hier, um Ihre App in den App Store zu laden. Wenn Sie irgendwelche Probleme haben, gehen Sie zu dem Spatzen Forum. http://www.idev101.com/code/Distribution/checklist.html Schritt 10: Schritt 12 Alle 8 Artikel anzeigen http://itunes.apple.com/us/app/icopter-cavecopter/id422062267?mt=8 Erstellen Sie ein iPhone-App ist hart, aber es ist nicht so schwer wie Sie denken. Ich schaffte es, ein funktionierendes Spiel in weniger als einem Monat mit nur die Links in diesem Tutorial machen. Alles, was Sie brauchen, ist das Engagement, Zeit und einige Ratschläge. Bitte überprüfe mein iPhone Apps :) Von: Kayhan Feroze Qaiser und Manish Kumar Herausgegeben und Fotografie durch: Manish Kumar
Arduino & Lego Solar Tracker (Dual Axis)
7 Schritt:Schritt 1: Ersatzteile Schritt 2: Prinzip Schritt 3: Stromkreis Schritt 4: Programm Schritt 5: Kopf Schritt 6: Grund Schritt 7: Diskussion Verbesserungs
Ich machte eine Solar-Tracker mit Lego und Arduino. Es ist ein sehr schönes und einfaches Projekt, wenn Sie arduino und Elektronik lernen wollen. Kein Löten erforderlich. Sein Zweck ist nur erzieherisch, weil die Motoren sind nicht stark genug, um das Gewicht von Sonnenkollektoren unterstützen. Es ist immer noch ein ziemlich cooler Solar-Tracker, erfuhr ich, Arduino und hatten eine Menge Spaß. (Verzeihen Sie mir für die schlechte Qualität von Fotos und vertikale Video :-)) Schritt 1: Ersatzteile Arduino Duemilanove AVR 2009 ATmega328 (~ 12 €) 2x SG90 Mini Servo 9g (ca. 4 €) 2-Achsen-FPV Nylon PTZ für SG90 (~ 2 €) Breadboard Kabel 4x Widerstände 10 kOhm (alle 3 in einem Kit ~ 10 €) 4x Photowiderstände (dh lichtabhängige Widerstände) (~ 6 €) Lego 1 Gummiband Heißklebe Ich fand alles außer der LEGO über eBay. Gesamtpreis ~ 34 € Schritt 2: Prinzip Jeder Iterationsschritt geht so: Die Sonne auf den Kopf des Roboters (wich ist eine Kreuzung mit einem Fotowiderstand in jeder Ecke). Wegen des grenzüber, sind einige Fotowiderstände mehr ausgesetzt, um die Sonne. wich reduziert ihren Widerstand. Wir messen den Widerstand jedes Fotowiderstand. Wir berechnen, wenn die richtige ist beleuchteten als die linke (oder umgekehrt). Wir Wirkung der horizontale Motor in Richtung der am meisten beleuchteten Seite zu bewegen. Wir berechnen, wenn die Spitze ist mehrere beleuchtete als der Boden (oder umgekehrt). Wir Wirkung der vertikalen Motor in Richtung der am meisten beleuchteten Seite zu bewegen. Alle Parameter, die Sie hier brauchen, sind: Wie viel Unterschied von Licht (Widerstand) ist genug, um zu entscheiden, sich zu bewegen? Wie weit wollen Sie Ihre Motoren nach jeder Entscheidung zu bewegen? Wie schnell wollen Sie den Motor bei jedem Schritt zu bewegen? Wie lange wollen Sie zwischen den Schritten warten? Was ist der am weitesten können Sie Ihre Motoren an move.Step 3 ermöglichen: Schalt Die Schaltung ist in zwei Teile geteilt. 1. Die Sensoren (4x) Schließen 1 resitor und 1 photoresitor in Serie. Verbinden den Knoten zwischen der 2 zu einem analogen Eingangsanschluß (in meinem Fall 0-4). Dies wird die Spannung zu messen. Schließen Sie das andere Ende des Widerstands auf den Boden Schließen Sie das andere Ende der Fotowiderstand bis 5 V (Die letzten 2 Schritte umgekehrt werden können, aber halten Sie die gleiche Regel für alle 4 Sensoren) 2. Die Motoren (2x) Verbinden Sie + 5V Connect - um Connect cotrol zu PWM Stifte Masse (in meinem Fall 9 & 10) Schritt 4: Programm vgl befestigt .ino Datei / * Solar Tracker 1.0 * Von Mathias Leroy * Novembre 2014 * * / // INITIALISIERUNG // ------------------------------------------------ #include // sprintf #include // Servo-Bibliothek Servo servoH; // Pin09 horizontale Servo Servo servoV; // Pin10 vertikale Servo // Analogen Lesestiftverbindungen int analogPinTopLeft = 0; // Gelbgrün int analogPinTopRight = 1; // Grau blau int analogPinBottomRight = 2; // Schwarzweiß int analogPinBottomLeft = 3; // Rotbraun // Parameter // ------------------------------------------------ int initAngleH = 80; int minAngleH = 0; int maxAngleH = 170; int initAngleV = 90; int minAngleV = 50; int maxAngleV = 150; int slowingDelay = 50; int sesitivityH = 30; int sesitivityV = 30; Steph int = 10; int stepV = 10; // Variablen // ------------------------------------------------ int angleH = initAngleH; int angleV = initAngleV; char Printline [50]; int valueTopLeft = 0; int valueTopRight = 0; int valueBottomRight = 0; int valueBottomLeft = 0; // EINRICHTEN // ------------------------------------------------ Leere setup () { servoH.attach (9); // ServoH.write (initAngleH); servoV.attach (10); // ServoV.write (initAngleV); Serial.begin (9600); Serial.println ("Ready :-)!"); } // LOOP // ------------------------------------------------ Leere Schleife () { Serial.println ("<<< --- Schleife starten"); // Werte lesen valueTopLeft = analogRead (analogPinTopLeft); valueTopRight = analogRead (analogPinTopRight); valueBottomRight = analogRead (analogPinBottomRight); valueBottomLeft = analogRead (analogPinBottomLeft); // Print Werte // Sprintf (Printline, "% d |% d \ n", valueTopLeft, valueTopRight); Serial.print (Printline); // Sprintf (Printline, "% d |% d \ n", valueBottomRight, valueBottomLeft); Serial.print (Printline); // Verzögerung (3000); // Rechendurchschnittswerte int averageTop = (valueTopLeft + valueTopRight) / 2; int averageRight = (valueTopRight + valueBottomRight) / 2; int averageBottom = (valueBottomRight + valueBottomLeft) / 2; int averageLeft = (valueBottomLeft + valueTopLeft) / 2; // Print Durchschnittswerte sprintf (Printline "-% d - \ n", averageTop); Serial.print (Printline); sprintf (Printline, "% d -% d \ n", averageLeft, averageRight); Serial.print (Printline); sprintf (Printline "-% d - \ n", averageBottom); Serial.print (Printline); Verzögerung (slowingDelay); // Horizontal Entscheidung & action Serial.print (angleH); Serial.print ("\ n"); if ((averageLeft-averageRight)> sesitivityH && (angleH-Steph)> minAngleH) { // Nach links gehen Serial.print ("Möchten Sie links"); Serial.print ("\ n"); Verzögerung (slowingDelay); for (int i = 0; i <Steph; i ++) { servoH.write (angleH--); Verzögerung (50); } } else if ((averageRight-averageLeft)> sesitivityH && (angleH + Steph) // Vertikalen Entscheidung & action Serial.print (angleV); Serial.print ("\ n"); if ((averageTop-averageBottom)> sesitivityV && (angleV-stepV)> minAngleV) { // Hinauf Serial.print ("going up"); Serial.print ("\ n"); Verzögerung (slowingDelay); for (int i = 0; i <stepV; i ++) { servoV.write (angleV--); Verzögerung (50); } } else if ((averageBottom-averageTop)> sesitivityV && (angleV + stepV) Serial.println ("--- Ende Schleife >>>"); } Schritt 5: Kopf Ich habe versucht, viele verschiedene Köpfe und ich endlich festgestellt, dass dieses klassische kreuzförmige einer der besten durchgeführt. Die Photowiderstände kommen ganz einfach in die Löcher der lego Platten. Ich reparierte die Drähte mit einem elastischen Band und Lego, um sie in Position zu halten. Ich habe nicht einen konkreten Plan, wie diese insbesondere Kopf erstellen. Lego sollen kreativ zu sein. Hier ist, was wichtig ist: Ein Kreuz; Platzieren Sie die Photowiderstände so nah wie möglich in die Ecken des Kreuzes; Ich fand, dass ein Teller mit lego von 4 breiten kneift nur perfekt in die 2-Achsen-FPV verwendet hier; Ein andjstable Winkel zwischen dem Kreuz und 4-breite Platte ist schön, von Hand (nicht programmatisch) .Schritt 6 Kalibrierung: Grund Für die Basis Ich klebte ein lego Schild auf der Unterseite des 2-Achsen-FPV und befestigt sie an andere lego Stücke in Form einer quadratischen dann. Die Form ist hier nicht wirklich importe. Wichtig ist, zu gewährleisten, die Basis ist schwer genug, um an Ort und Stelle zu bleiben und um einen Ort, um Ihre Steckbrett befestigen zu schaffen und ein auf Ihre Arduino beheben. Die Kabel sollten sich frei, mit der Bewegung des head.Step 7 bewegen zu bleiben: Diskussion Verbesserungs Um die Empfindlichkeit zu verbessern, sollten die Photowiderstände passen mehr in der Nähe in den Ecken des Kreuzes. Sie anderswo Servos. Dies sind schwach und manchmal bei verschiedenen Geschwindigkeiten unvorhersehbar. Vielleicht könnte ein Sensor Abschirmung der Schaltung zu erleichtern und weniger Kabel. Dieser Roboter ist nicht wirklich schnell im Vergleich zu einigen anderen, die Sie auf instructables finden. Dies kann in dem Programm geändert werden. Ich sollte es noch langsamer für echte Sonnenverfolgung. Bitte teilen Sie mir Ihre Ideen in die Kommentare :)!
Illumaphone: lichtbasierte Musikinstrument mit Arduino
5 Schritt:Schritt 1: Lichterfassungs Schritt 2: Verdrahtung der Lichtsensoren Schritt 3: Laden Sie das Arduino Sketch Schritt 4: Führen Sie das Spannfutter-Programm Schritt 5: Kalibrieren und Spielen
Wollten Sie schon immer Ihr eigenes elektronisches Musikinstrument zu bauen? In diesem Instructable, gehe ich durch den Build-Prozess für meine Illumaphone, einer lichtbasierten, räumliche Musikinstrument, das ich für Jeff Snyders Computermusik an der Princeton-Klasse gebaut. Es besteht aus sechs Tassen Kaffee. Bewegen Sie Ihre Hände über die Luft, um Notizen auslösen; Lichtspiegel zu kontrollieren Lautstärke und Vibrato. Jede Tasse eine andere Note. Vorkenntnisse: Diese Instructable davon aus, dass Sie mit dem Arduino sind, und dass Sie behandeln die Installation und Einrichtung ein Programm namens Chuck. Materialien: 6 Fotowiderstände 1 Arduino Uno Die üblichen Verdrahtungs Bits: Krokodilklemmen / wire / Montageplatten. Ich habe kein Löten, weil dies ein temporäres Projekt. Irgendeine Art von kastenförmigen Objekt, um die Verkabelung zu verstecken. Ich habe den Karton Deckel einer Schachtel Druckerpapier. 6 Einweg Kaffeetassen zu tun, als Lichttrichter 1 Laptop-Daten zu verarbeiten und zu tun Klangerzeugung Alles beginnt mit sechs treuen Fotowiderstände, eine in den Boden jeder Tasse. Das Arduino Uno liest Daten von den Lichtsensoren und sendet sie an den Laptop, die dann verwendet Futter (ein musikalisches Programmiersprache an der Princeton entwickelt), um Notizen gegebenenfalls zu synthetisieren. Der Körperbau ist Schlüssel für eine gute Erfahrung. Ausblenden von Drähten macht die Menschen konzentrieren sich auf die Sound und die Tassen wirken als genial Lichttrichter, so ihre Form tut Art von Materie. Alles klar, lass uns started.Step 1: Lichterfassungs Lichtsensoren sind die einfachste, kritischer Teil des Illumaphone! Wenn Sie sie vor nicht verwendet haben, werde ich kurz erläutern, wie dies zu tun. Wenn Sie bereits wissen, wie Fotowiderstände auf ein Arduino, spoiler alert verbinden: alles, was wir hier tun, ist Befestigung eines Sensors auf einem Arduino Uno jeden analogen Stift, so können Sie hier weiterlesen. Was ist ein Fotowiderstand / Lichtsensor / lichtabhängigen Widerstand überhaupt? Ein Fotowiderstand ist eine spezielle Komponente, deren Widerstand schwankt sichtbares Licht basiert. Abhängig von Ihrer Umgebung kann ein Fotowiderstand in der Lage, Schwankungen durch Bewegungen verursacht, soweit ein paar Meter entfernt zu erfassen. Anschließen eines Fotowiderstand an den Arduino Uno Ich empfehle das Arduino Spielplatz Tutorial für diesen Sensor. Hier sind die Anweisungen: Schließen Sie den Fotowiderstand einem Bein auf 0 Pin und Pin an + 5V Schließen Sie einen Widerstand (ca. 10k ist ein guter Wert, gibt höhere Werte höhere Messwerte) von Pin 0 bis GND. (Siehe Anhang der arduino Notebook Seite 37 Schaltpläne). Von dort aus, ich empfehle den Betrieb ihrer Test-Code: int lightpin = 0; // Definieren einen Pin für Photo-Widerstand Leere setup () { Serial.begin (9600); // Begin serielle Kommunikation } Leere Schleife () { Serial.println (analogRead (lightpin)); Verzögerung (200); // Kurze Verzögerung für eine schnellere Reaktion auf Licht. } Können Sie sehen, Werte gedruckt? Wenn ja, großartig! Du bist bereit, auf dem Weg zu den nächsten step.Step 2: Verdrahtung der Lichtsensoren Jeder Lichtsensor muss, um auf der Arduino eines Analog-Eingangs-Pin angeschlossen werden. Der Schaltungsaufbau ist identisch zu dem, was wir im letzten Schritt tat, aber multipliziert mit sechs. Wie für den Körperbau, fand ich es hilfreich, indem die Lichtsensoren in die Tassen zuerst anfangen, und bringen Sie dann die Tassen mit dem Basis Sekunde. Um die Lichtsensoren in die Tassen legen, habe ich eine Nähnadel zu zwei richtig beabstandeten Löcher in den Böden der einzelnen Papierkaffeetasse stechen. Fädeln Sie den Lichtsensor durch, so dass es in die richtige Richtung ist gegenüber. Abhängig von der Größe und der Form der Schalen, kann dies schwierig sein; Sie Pinzette verwenden, wenn Sie Schwierigkeiten haben. Um jede Tasse auf die Basis legen, ich noch einmal eine Nadel verwendet, um Löcher in den Karton stecken, für die Beine der Fotowiderstände zu durchlaufen. Dann habe ich liberalen Mengen von Klebeband, um alles zusammen zu halten. Sie können hier sehr effektiv zu improvisieren: versuchen Sie es mit Heißkleber statt, zum Beispiel. Für mich ist das schwarze Klebeband endete als Teil der Gesamtästhetik. Sie können aus dem zweiten Foto, das die Schaltung mit einer Masse von Krokodilklemmen gebildet sehen. Wie ich schon sagte, diese wurde entwickelt, um eine temporäre gebaut werden; wenn ich es wieder tun, würde ich sicher sein, tatsächlich die Dinge zu löten, route meine Verkabelung richtig usw. Auch wenn Sie die Krokodilklemme Weg zu gehen, achten Sie darauf, liberale Mengen von Band zu verwenden, um die Dinge relativ organized.Step 3: Laden Sie die Arduino Sketch Nun, da Ihr Build abgeschlossen ist, drehen Sie die Illumaphone rightside up. Hey, es sieht nicht völlig chaotisch von dieser Seite! Der nächste Schritt ist das Hochladen der Arduino Sketch. Es ist hier verfügbar: https://github.com/bonniee/illumaphone/blob/master/readAllAnalog/readAllAnalog.ino Diese Skizze ist recht einfach; es gerade liest die Daten von den Stiften und druckt sie dann. Gehen Sie voran und überprüfen Sie die Serien Monitor zu sehen, was happening.Step 4: Führen Sie das Spannfutter-Programm Schallerzeugung durch ein Spannfutter Programm behandelt. Wenn Sie nicht ChucK installiert haben, können Sie Anweisungen dafür finden Sie hier: http://chuck.cs.princeton.edu/release Sie können das Spannfutter-Programm für die Illumaphone hier herunterladen: https://github.com/bonniee/illumaphone/blob/master/cuppy.ck Um das Programm zu starten, öffnen Sie sie in das Spannfutter IDE, die auch als MiniAudicle bekannt. Sie müssen es mit der richtigen Nummer für Ihre serielle Schnittstelle zur Verfügung stellen. Stecken Sie zuerst in der Illumaphone via USB. Dann versuchen, das Spannfutter-Programm ausführen. Es sollte eine Liste der seriellen Ports als Optionen zu geben. Suchen Sie sich die Zahl, die die richtigen USB-Anschluss stellt, geben Sie in das Feld Argumente, und starten Sie das Spannfutter-Programm. (Sie können auch ChucK Programme laufen über die Kommandozeile: chuck cuppy.ck:NUM_HERE) Schritt 5: Kalibrieren und Spielen Die Skizze wird bis zu kalibrieren, wenn Sie es starten, so sicher sein, um das Spannfutter-Programm ausführen, während Sie sich nicht in den Becher stehend gesetzt. Nachdem Sie das Programm ausführen, sollten Sie nicht hören, jedes Geräusch; Sie sollten in der Lage, mit der Hand über den Cups winken ihnen zu spielen. Wenn Sie alles richtig kalibriert haben - viel Spaß! Ich würde gerne ein paar Videos von Ihrer Leistung zu sehen. Experimentieren Sie mit verschiedenen Bewegungen und Techniken; Sie können sogar eine Taschenlampe, um die Tassen zu spielen, da sie empfindlich auf sowohl Licht und Schatten. Schließlich habe ich ein Video von mir Durchführung neben meinem Freund Ernte angebracht. (Er trägt einen Meditations-basierte Musikinstrument, dass wir gebaut, auch!) Weitere Ressourcen: Erläuternde Blog-Post Github Repository ChucK Sprache Homepage
Wie man einen Chat-Room (mit Notepad) zu machen
9 Schritt:Schritt 1: Der TOTAL CODE Schritt 2: Sie den Code in Teile zerbrochen Schritt 3: Der Titel und MENU Schritt 4: Passworteingabe Schritt 5: DIE ANWEISUNGEN Schritt 6: Die Warnungen Schritt 7: Der Bote BLOCK Schritt 8: SPAREN Schritt 9:
Diese Instructable zeigt Ihnen, wie Sie ein Chat-Room mit dem kostenlosen Windows-Anwendung namens Notepad machen. Dieses Programm wurde nicht kopiert und eingefügt werden, wurde sie von Grund auf neu gemacht, die Sie kopieren es (wenn Sie nicht wollen, um den Code zu lernen). Was habe ich zu machen? Ich habe einen Chatraum mit Notizblock, ich habe gerade verwendet meinem Computer . Wie habe ich es schaffen? l las ein paar Tutorials, und im Laufe der Zeit ich Wissen, wie man mehrere verschiedene betreibbar Batch-Dateien erstellen gebaut. Ich habe das alles von mir selbst (mit ein wenig Hilfe von "Prof. Pickle"), die "Pläne" immer ändern Ich halte das Hinzufügen von mehr Stücke, um sie. das ist, was ich liebe, Programmierung, können Sie nur halten sie verändert und entwickelt es. Wo hast du das machen? Ich habe dies in meinem Haus. (Ich wollte nicht, um neue Computer kaufen zu müssen, habe ich nicht zu Hause haben.) Was haben Sie gelernt? Ich habe gelernt, mehr Codes und Befehle, werde ich die Entwicklung und den Aufstieg in mein Hobby. Ich bin einfach nur stolz auf die Tatsache, dass ich das alles von mir, und dass es so groß von einem Code ist (ich weiß, es ist nicht so groß, ich möchte nur zu denken, es ist). wenn ich, es zu tun "wieder:" Ich würde die Wirkung Hintergrund und Text attraktiver zu machen hinzuzufügen. Für den Chatraum zu arbeiten, müssen Sie die IP-Adresse des Computers, den Sie Personen, die Nachricht senden möchten wissen. Dieser Chat-Raum ist passwortgeschützt, und wenn ein Hacker versucht, es zu hacken sie Witze um mit ihnen. Genug davon, lets get auf dem Code. Schritt 1: Der TOTAL CODE Hier ist der gesamte Code in einer großen Liste. Kopieren Sie einfach den Code (alles zwischen dem Hash-Tags #). Nach dem Kopieren hier alles fügen Sie ihn in einem leeren Editor-Datei. speichern Sie sie als BAT-Datei (Messenger.bat). Sehen Sie den letzten Schritt für die weitere Hilfe Einsparung. ##################################################################################################### echo off Titel Superman Chat Room Farbe 0e : Top Echo === Supermans Chat Room === ECHO 1 - Zugang Chatraum über Passwort ECHO 2 - Zugang für Hacker ECHO 3 - in den Chat-Raum ohne Passwort zu bekommen ECHO 4 - Abfahrt SET / P OPT = Bitte treffen Sie eine Auswahl, und drücken Sie die Eingabetaste: wenn% OPT% == 1 GOTO OPTION1 wenn% OPT% == 2 GOTO OPTION2 wenn% OPT% == 3 GOTO OPTION3 wenn% opt% == 4 GOTO OPTION4 :OPTION 1 GOTO PASS ECHO Umleiten zu Passworteingabe : OPTION2 ECHO Redirect für Hacker ping -n 2 127.0.0.1> nul Farbe c echo ================================================= ============================= echo Komm ich weiß, Sie besser als die sind, kommen auf einen Hacker knacken den Code! echo ================================================= ============================= ping -n 2 127.0.0.1> nul echo ACCESS DENIED Pause Ausgang : OPTION3 echo ist kostenlos Farbe c ping -n 2 127.0.0.1> nul echo ================================================= =============== ECHO Glaubst du, ich wäre eigentlich können Sie in erhalten, ohne ein Passwort? echo ================================================= =============== ping -n 2 127.0.0.1> nul echo ACCESS DENIED Pause Ausgang : OPTION4 echo Sind Sie sicher, dass Sie beenden? echo J / N Echo-Typ "Y" oder "N" set input = set / p Eingang = wenn Eingang%% == y goto y wenn Eingang%% == n goto n : Y echo yes Pause Ausgang : N echo keine echo umleiten Menü ping -n 2 127.0.0.1> nul CLS zum Seitenanfang :BESTEHEN ECHO Geben Sie den richtigen richtige Passwort set / p pass = passwort: wenn% pass% == 1234 goto Access Granted Cls COLOR C Echo. echo ACCESS DENIED ping -n 2 127.0.0.1> nul AUSGANG cls goto Pass :Zugriff gewährt Farbe ein Echo-Zugriff gewährt, Willkommen. Pause Farbe ein echo Anweisungen: Geben Sie die IP-Adresse der Person, die Sie sprechen, um den Chatraum zu betreten möchten, echo geben Sie es nach "Messenger", nachdem Sie den Chatraum zu betreten. Pause Echo für "erfahrene" Benutzer halten Sie die unten den Pfeil nach unten, bis Sie den Chatraum zu erreichen. Echo, wenn Sie nicht mit "Supermans Chat Room" als eine beliebige Taste drücken, sobald farmiliar für die Anweisungen. Pause echo Schritt 1) Um Ihre IP addres öffnen Eingabeaufforderung im Startmenü für Windows-Benutzer. Pause echo Schritt 2) Geben Sie "ipconfig", sobald sie sich öffnet. Pause echo Schritt 3) Notieren Sie sich die IP-Adresse, und geben Sie es nach dem Wort "messenger" Pause echo Schritt 4) Beginnen Sie Chat-Raum Gebrauch Cls Farbe c Pause Echo dieser Code wurde von Superman erstellt Pause Cls echo !!! Achtung! Dieser Code wurde nicht geschaffen, noch für illegale Gebrauch bestimmt !!! echo Das ist deine letzte Chance, dieses Programm zu schließen oder werden Sie in das Chat-Raum! Pause Cls echo Eingabe Chat Room Pause :EIN Cls echo MESSENGER eingestellt / pn = User: set / pm = Nachricht: net send% n%% m% 2> nul || echo Ihre Nachricht nicht durch && Pause gehen Pause Goto A ##################################################################################################### Ja, ich weiß, dass es eine faire große Menge an Code ist. Schritt 2: Sie den Code in Teile zerbrochen In den folgenden Schritten werde ich in die "Blöcke" brechen Sie den Code der Code aus 5 verschiedenen Stücke Hexe gemacht Ich mag zu nennen "Bausteine". Die Stücke sind: der Titel und Menüs, die Menüs Optionen, die Passworteingabe, die Anweisungen, die Warnungen und natürlich der Bote selbst. Wir werden den Titel und Menü zunächst erklären. Schritt 3: Der Titel und MENU Das Bild zeigt, was jede Sache ist / tut. Die Titelnamen es (natürlich) das Menü Hilfe verhindern, dass Hacker und neugierige Menschen aus Ihrem Chat-Raum. Nur eine der Optionen finden Sie in der Protokoll in Schritt 4 erhalten: Passworteingabe Das Bild zeigt, was jede Sache ist / tut. Das Passwort schützt es von Menschen, die nicht wissen, wie man Code oder Menschen, die schlechte Sicht haben zu bearbeiten, (es ist sehr schwer, ein paar Buchstaben in eine Menge von Zeilen von Daten vor Ort) Das Passwort kann geändert werden, aus der Liste ist 1234, nach der Installation dieses Rück es (aber nicht die Code) und geben Sie Ihr Kennwort zu finden, es so lange wie Sie möchten, sein kann. Schritt 5: DIE ANWEISUNGEN Das Bild zeigt, was jede Sache ist / tut. Die Anweisungen sind klein einfach zu folgen, aber Sie können sie bearbeiten, wenn Sie wollen. die Anweisungen sagen Ihnen, wie Sie Ihre IP finden und wie Sie Eingabe it.Step 6: DIE WARNUNGEN Das Bild zeigt, was jede Sache ist / tut. Die Warnung, die ich hier legte sind sinnlos, es sei denn, Sie wollen, dass es cool aussehen, können Sie diese ganz einfach löschen, wenn Sie nicht gerne drängen zwei weitere buttons.Step 7: Der Bote BLOCK Dies ist der Bote des Programms ist, sendet und empfängt die Nachrichten, ohne diese gibt es keinen Punkt zu diesem Programm. In der Tat könnte man den Code von jedem Teil zu zerlegen und sie für andere purposes.Step 8: SPAR Dies ist, wie Sie Ihre Batch-Datei zu speichern. klicken Sie auf "Datei", "Speichern unter", nächste, geben Sie den Dateinamen Ihrer Wahl dann unmittelbar nach dem Namen (ohne Leerzeichen) eingeben ".bat" und klicken Sie auf Speichern. Ein Beispiel "Myprogram.bat" (siehe Fotos) Schritt 9: Fertig sind wir! Ich bin nicht verantwortlich für das, was überhaupt Sie mit diesem zu tun! Jetzt können Sie sagen, dass Sie Ihr eigenes Programm gemacht!
Boxhead mit Python neu mit Tkinter
<Iframe frameborder = 0 height = 377 src=http://player.vimeo.com/video/56589377 width = 500> </ iframe> Boxhead neu in Python von BenR auf Vimeo. Video Boxhead neu mit Python mit Tkinter Es ist ein fantastisch unterhaltsame Computerspiel namens Boxhead, wo im wesentlichen Sie und / oder eine zweite Person abzuwehren Horden von angreifenden Zombies und Devils mit verschiedenen Waffen. Für einen Computer Science-Klasse in diesem Jahr, die ich nehme, war der letzte Projekt, ein Computerspiel in Python mit Tkinter neu zu erstellen. Boxhead schien die logische Wahl zu sein und ich über dieses anschließend eingestellt. Ich hoffe, dass Sie genießen, was sie in so weit gedreht hat, und ich hoffe, mehr Waffen, Ebene mit Objekten und einen zweiten Spieler in der Zukunft hinzuzufügen. Ab sofort Boxhead kann nur kämpfen, mit einer Pistole und Minen, aber es wäre toll, um den Zugriff auf Schrotflinte und Raketen haben. Fühlen Sie sich frei, um den Code zu kopieren und spielen Sie oder fügen Sie Waffen. Denken Sie auch daran, dass das Programm und Bilder müssen im gleichen Ordner aufbewahrt werden und die Bilder werden in Unterordnern. Zum Beispiel die Boxhead Bilder sind in einem separaten Ordner als die Zombie Bilder. Die Zombies gehen in die "Zombies" Unterordner, Teufel in "Teufel", boxhead in "Boxhead" und mine / Blut / Teufel Angriff (gelbe Kugel) in "Spielelemente". Die Bedienelemente für die Bewegung sind "WASD", Pause "p", un-Pause "o", Wechsel zwischen Waffen "i" und "u". Am wichtigsten ist aber, "Raum" ist Feuer. Wenn Sie das Spiel spielen wollen alle Bilder benötigt, um zusammen mit dem Code verfügbar sind, gehen hier zusammen mit dem Code. # # Boxhead Von Ben Rothschild # Boxhead - eine Kopie der Original-Spiel in Python mit Tkinter # from Tkinter import * Einfuhrzufallsimportzeit import math window_height = 550 # gemacht Letzte Änderung 2012.12.14 stellen Sie die Fensterhöhe und -breite window_width = 800 X_Window_Buffer = 40 Y_Window_Buffer = 40 = Leinwand auf Keilrahmen (highlightthickness = 0, height = window_height, width = window_width) canvas.master.title ("Boxhead") canvas.pack () Main = canvas.create_rectangle (0,0, window_width, window_height, füllen = "# EBDCC7", belowThis = None) # schaffen die Grundfarbe ähnlich dem von der Boxhead Spiel pic = photoimage (width = window_width, height = window_height) canvas.create_image (0,0, image = Bild, Anker = NW) Zombie_Dict_Made = False # haben die Zombies und Boxhead geschaffen? boxhead_made = False Run_Game = True New_Level = False B_move_length = 2 # Einige der Spiel-Attribute diese Änderung und sind für die Erstkonfiguration verwendet. Die meisten würden besser in einem zentralen Spielklasse Zombie_per_move = 0,5 Devil_move = 1 sein Richtung = 1 shot_duration = 0,01 Zombie_Buffer = 30 = 15 kill_zone Number_of_Zombies = 5 total_devil_attacks = 0 = 0 blood_marks number_of_mines = 0 global pause_game # Pause das Spiel, wenn "P 'gedrückt wird oder starten Sie es, wenn' O 'wird pause_game gedrückt = False Mines_Dict = {} # hält alle Minen Zombie_Dict = {} # Wo die Zombies sind gehalten - Elemente gelöscht werden als Boxhead schießt sie Devil_Dict = {} # gleichen wie Zombie_Dict aber für Devils Dead_Zombie_List = [] Devil_Attack_Dict = {} # Die Kugeln, die die Devils mit Klasse Edge_limits (Objekt) anzugreifen: "" "Weist Grenzen in jeder x y-Richtung, um Objekte, so dass sie nicht aus der Lauf Spiel-Bildschirm "" "def __init __ (self): self.x_start = 2 * X_Window_Buffer - 20 self.y_start = 3 * Y_Window_Buffer -35 self.x_end = window_width - X_Window_Buffer - 20 self.y_end = window_height - Y_Window_Buffer - 20 Klasse Buffer ( Gegenstand): "" "Die Randpuffer für das Spiel" "" def __init__ (self, x_start, y_start, x_end, y_end, füllen): canvas.create_rectangle (x_start, y_start, x_end, y_end, füllen = fill) left_buffer = Buffer (0,0, (X_Window_Buffer), (Y_Window_Buffer + window_height), "Black") # erstellen alle Puffer Bilder right_buffer = Buffer((X_Window_Buffer+Window_Width),0,(Window_Width-(X_Window_Buffer)),((2*Y_Window_Buffer)+Window_Height), "Black") top_buffer = Puffer (0,0, (window_width-X_Window_Buffer), Y_Window_Buffer, "Black") bottom_buffer = Puffer (0, (window_height-Y_Window_Buffer), window_width, window_height, "Black") Klasse Blood (Objekt): "" "" def __init __ (self, x "Was passiert, wenn Sie etwas zu töten. Es schaffen ein Blutfleck auf den Koordinaten der getötet Zombie (n) / Devil (e) Sie sind am Anfang jeder neuen Ebene gelöscht", y): global base_for_blood self.image = photoimage (file = "images / game_elements / blood.gif") self.blood_spot = canvas.create_image (x, y, image = self.image) canvas.tag_lower (self.blood_spot) Leinwand .tag_lower (Main) Klasse MINE (Objekt): "" "Die Minen Klasse Pass auf, wo Sie Schritt." "" def __init __ (self, x, y): = self.photo photoimage (file = "images / game_elements / Bergwerk. gif ") self.image = canvas.create_image (x, y, image = self.photo) # Erstellen Sie ein schwarzes Rechteck für das Bergwerk Bild canvas.tag_lower (self.image) canvas.tag_lower (Main) self.destroy = False Selbst .x = x = y self.y def explodieren (self): "" "fest, ob ein Zombie oder Teufel ist nah genug an der Mine eingestellt. Wenn das wahr ist, dann testet, um zu sehen, ob ein Zombie oder Teufel in der größeren Umgebung getötet werden sollten "" "destroy_zombie = [] destroy_devil = [] self.exploded = False für the_zombie in Zombie_Dict: Zombie = Zombie_Dict [the_zombie] if abs (self.x - Zombie.x) <20 und abs (self.y - Zombie.y) <20: # Test, um zu sehen, wenn ein Zombie / Devil ist innerhalb der Box, die +/- 40 Pixel von der Mine x und y = True self.exploded self.destroy = True für the_devil in Devil_Dict: Devil = Devil_Dict [the_devil], wenn abs (self.x - Devil.x) <20 und abs (self.y - Devil.y) <20: self.exploded = True self.destroy = True, wenn self.exploded == True: explodieren = canvas.create_oval ((self.x - 80), (self.y - 80), (self.x + 80), (Selbst .y + 80) einzutragen, füllen = 'Orange') # der Radius der Explosion ist 80 canvas.update (), wenn self.exploded == True: zum Teufel in Devil_Dict: Devil = Devil_Dict [Teufel] # den Zombie, um ein In Liste gelöscht werden, da kann man nicht ändern, Wörterbücher beim Überqueren Sie sie, wenn abs (self.x - Devil.x) <80 und abs (self.y - Devil.y) <80: destroy_devil.append (Teufel) für Zombie in Zombie_Dict : Zombie = Zombie_Dict [Zombie], wenn abs (self.x - Zombie.x) <80 und abs (self.y - Zombie.y) <80: destroy_zombie.append (Zombie) für Artikel in destroy_zombie: # Löschen der Zombie / Devils in der Explosion canvas.delete (Zombie_Dict [Artikel] .zombie) gefangen del Zombie_Dict [Artikel] für Einzelteil in destroy_devil: canvas.delete (Devil_Dict [Artikel] .devil) del Devil_Dict [Option], wenn self.exploded == true : canvas.delete (explodieren) Klasse Zombie_Attack (Objekt): "" "Der gelbe Kreis, dass die Zombies verwendet, um Boxhead angreifen. Es hat eine Lebensdauer von 125 Fällen in der while-Schleife, bevor es verschwindet. Es sei denn, es Streiks boxhead und senkt Gesundheits boxhead die von vielen "" "def __init __ (self, x, y, x_vel, y_vel): self.x = x = y self.y self.image = photoimage (file =" Bilder /game_elements/devil_a.gif ") self.attack = canvas.create_image (self.x, self.y, image = self.image) self.x_vel = x_vel wenn self.x_vel> 0: # Wenn die Geschwindigkeit in diese Richtung ist nicht 0 Es addiert 1 zu der Geschwindigkeit, so dass es schneller als der Teufel, der sie erschossen self.x_vel + = 0,75, wenn self.x_vel <0:. self.x_vel - = .75 self.y_vel = y_vel wenn self.y_vel > 0: self.y_vel + = 0,75, wenn self.y_vel <0: self.y_vel - = .75 self.life_span = 125 def move (self): global boxhead1 self.x + = self.x_vel self.y + = self.y_vel canvas.coords (self.attack, self.x, self.y) self.life_span - = 1, wenn abs (self.x - boxhead1.x) <30 und abs (self.y - boxhead1.y) < 30: #Strike Boxhead, wenn innerhalb von 30 Pixel boxhead1.health - = 10 = 0 self.life_span Klasse Shot (Objekt): "" "Korrigieren, wo gun versuchte je nachdem, welche Richtung Boxhead ist. Wegen der Boxhead Bild die Koordinaten von wo die Waffe ist, wenn Boxhead dreht sich unterscheidet, dass wenn er mit dem linken Dreharbeiten in Bezug auf die ursprünglichen x, y Position in der oberen linken Ecke des Bildes "" "Klasse Stats (Objekt ): "" "Legt die Partitur label / info. Dies aktualisiert einmal pro Schleife auf der Basis aller Boxhead Attribute ab. Gesundheit und Punktzahl "" "def __init __ (self): global boxhead1 self.board = self.board = canvas.create_text (200,65) canvas.create_rectangle(X_Window_Buffer,Y_Window_Buffer,Window_Width-X_Window_Buffer,Y_Window_Buffer+20,fill="Red") def Update (self): health_string = str (boxhead1.health) score_string = str (boxhead1.score) level_string = str (boxhead1.level) gun_string = str (boxhead1.gun) ammo_string = str (boxhead1.ammo) score_board = "Health : "+ health_string +" "+" Score: "+ score_string +" "+" Level: "+ level_string +" "+" Gun: "+ gun_string +" "+" Ammo: "+ ammo_string canvas.delete (Selbst. board) self.board = canvas.create_text (230,52, text = score_board) Klasse Boxhead (Objekt): "" "Die Boxhead charecter. Schießen, verschieben, Minen legen etc. sind alle in der Klasse Boxhead contianed. Schließlich all der Pistole Details müssen auf thier eigenen Klasse verschoben werden, so dass Pistol Gun = (Bereich Schaden) und Minen = Gun (Radius, Beschädigung) schließlich sogar Shotgun = Gun (Bereich damange, arc_width) und so weiter "," "def __init __ (self): self.image_up = photoimage (file =" images / boxhead / bhup.gif ") # Das Bild ändert, wenn Boxhead nach oben unten links rechts self.image_down = photoimage (file =" images / boxhead / bhdown.gif ") self.image_left = photoimage (file =" images / boxhead / bhleft.gif ") self.image_right = photoimage (file =" images / boxhead / bhright.gif ") self.x = random.randrange (( (game_limit.x_start / 2) 15), game_limit.x_end) # einen zufälligen Startpunkt auf der rechten Seite des Feldes. Zombies beginnen auf der linken Hälfte. self.y = random.randrange (game_limit.y_start, game_limit. y_end) self.image = canvas.create_image (self.x, self.y, image = self.image_up) self.x_vel = 0 = 0 self.y_vel self.direction = 1 self.health = 100 # +5 Gesundheit hinzugefügt am Anfang jeder Ebene self.gun = "Pistol" self.level = 1 self.score = 0 self.ammo = "unendlich" self.pause = False self.bonus_score = 0 self.pistol_range = 150 # der Bereich der Pistole in Pixel self.mine_count = 0 # Wie viele Minen def links zu bewegen (self): global unterwegs if (self.x> = game_limit.x_end) und self.x_vel> 0: # Kann Bewegung in diese Richtung Boxhead oder wird er Streik der Kante des Spiels self.x_vel = 0, wenn self.x <= game_limit.x_start und self.x_vel <0: self.x_vel = 0 sonst: übergeben, wenn (self.y> = game_limit.y_end) und self.y_vel > 0: self.y_vel = 0 elif self.y <= game_limit.y_start und self.y_vel <0: self.y_vel = 0 sonst: pass self.x + = + = self.x_vel self.y self.y_vel Leinwand. coords (self.image, (self.x), (self.y)) def shot_coords_update (self): "" "aktualisieren Sie die Koordinaten, wo die Waffe sollte aus abgefeuert werden" "" Wenn self.gun == "Pistol" oder self.gun == 'Mines': gun_range = self.pistol_range globalen up global unten links global global rechten up.x_start = 10 + boxhead1.x up.y_start = -5 + boxhead1.y up.x_end = 11 + boxhead1. x up.y_end = boxhead1.y - (gun_range + 5) = down.x_start boxhead1.x - 10 down.y_start = 5 + boxhead1.y down.x_end = boxhead1.x - 9 down.y_end = gun_range + 5 + boxhead1 .y left.x_start = 15 + boxhead1.x left.y_start = boxhead1.y - 15 left.x_end = boxhead1.x - gun_range - 15 left.y_end = boxhead1.y -15 right.x_start = 5 + boxhead1.x rechts .y_start = 0 + boxhead1.y right.x_end = gun_range + 5 + boxhead1.x right.y_end = 1 + boxhead1.y wenn self.direction == 1: # welche Richtung Boxhead ist Tatsache, 1 = bis 2 = unten usw. boxhead1.shoot_coords (up.x_start, up.y_start, up.x_end, up.y_end) wenn self.direction == 2: boxhead1.shoot_coords (down.x_start, down.y_start, down.x_end, down.y_end), wenn Selbst .Direction == 3: boxhead1.shoot_coords (left.x_start, left.y_start, left.x_end, left.y_end) wenn self.direction == 4: boxhead1.shoot_coords (right.x_start, right.y_start, right.x_end, right.y_end) def pic (self): "" "Ändern Boxhead das Image auf der Basis der Richtung er sich bewegt" "" Wenn self.direction == 1: canvas.itemconfigure (self.image, image = self.image_up), wenn Selbst .Direction == 2: canvas.itemconfigure (self.image, image = self.image_down) wenn self.direction == 3: canvas.itemconfigure (self.image, image = self.image_left) wenn self.direction == 4: canvas.itemconfigure (self.image, image = self.image_right) def fire_gun (self): "" "Fires je nachdem, welcher Waffe, die Boxhead wird mit im Moment" "" global blood_marks, Blood_Dict self.bonus_score = 0 Dead_Zombie_List = [] which_zombie = 0 global Zombie_Dict kill_list = [] # die Librarys, die halten, was Zombie muss von Zombie_Dict kill_devil = [], wenn self.gun == "Pistol" gelöscht werden: self.bullet_image = canvas.create_rectangle(self.shoot_x_start,self.shoot_y_start,self.shoot_x_end+1,self.shoot_y_end+1,fill="Black") # Erstellen die Kugel canvas.update () für Each_Zombie in Zombie_Dict: Zombie = Zombie_Dict [Each_Zombie] # Test, ob jeder Zombie ist im Weg der Kugel, wenn self.direction == 1: wenn Zombie.y <self.shoot_y_start und Zombie .y> self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: kill_list.append (Each_Zombie) elif self.direction == 2: wenn Zombie.y> self.shoot_y_start und Zombie.y <self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: kill_list.append (Each_Zombie) elif self.direction == 3: Wenn Zombie.x <self.shoot_x_start und Zombie.x> self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) <25: kill_list.append (Each_Zombie) elif self.direction == 4: wenn Zombie.x> self.shoot_x_start und Zombie.x <self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) < 25: kill_list.append (Each_Zombie) für each_devil in Devil_Dict: Zombie = Devil_Dict [each_devil], wenn self.direction == 1: wenn Zombie.y <self.shoot_y_start und Zombie.y> self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: Zombie.health - = 26 # Lower Teufels Gesundheit durch 26, so dass es dauert 4 Schüsse, ein Teufel, während 1 für einen Zombie kill_devil.append (each_devil) elif self.direction == 2 schlagen: wenn Zombie.y> self.shoot_y_start und Zombie.y <self.shoot_y_end und abs (Zombie.x - self.shoot_x_start) <25: Zombie.health - = 26 kill_devil.append (each_devil) elif self.direction == 3: if Zombie.x <self.shoot_x_start und Zombie.x> self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) <25: Zombie.health - = 26 kill_devil.append (each_devil) elif self.direction == 4: if Zombie.x> self.shoot_x_start und Zombie.x <self.shoot_x_end und abs (Zombie.y - self.shoot_y_start) <25: Zombie.health - = 26 kill_devil.append (each_devil) für Each_Zombie in kill_list: # Zerstören Sie die Zombie- von der Zombie_Dict und Leinwand Zeichen = Blut getötet werden (Zombie_Dict [Each_Zombie] .x, Zombie_Dict [Each_Zombie] .y) Blood_Dict [blood_marks] = Zeichen blood_marks + = 1 canvas.delete (Zombie_Dict [Each_Zombie]) del Zombie_Dict [Each_Zombie] boxhead1.score + = 1 self.bonus_score + = 1 für the_devil in kill_devil: mark = Blood (Devil_Dict [the_devil] .x, Devil_Dict [the_devil] .y) Blood_Dict [blood_marks] = Zeichen blood_marks + = 1, wenn Devil_Dict [the_devil]. Gesundheit <= 0: canvas.delete (Devil_Dict [the_devil]) del Devil_Dict [the_devil] boxhead1.score + = 1 self.bonus_score + = 1 canvas.delete (self.bullet_image) self.score + = (self.bonus_score / 3) wenn self.gun == 'Mines': # lag ein Bergwerk und geben Sie es mine.x = boxhead1.x und mine.y = boxhead1.y globalen number_of_mines wenn self.mine_count> 0: mine = mine (self.x Selbst .y) Mines_Dict [number_of_mines] = mine number_of_mines + = 1 self.mine_count - = 1 sonst: pass canvas.update () def Taste (self, key): "" "Schauen Sie sich die Eingabe von der Tastatur und passen Boxhead entsprechend. Bewegung = WASD Feuer = Raum Pistol = I Mines = U Pause = P = O Erneut aktivieren "" "Weltpresse, pause_game drücken = Taste drücken, wenn == 'w': self.x_vel = 0 = self.y_vel -B_move_length self.direction = 1, wenn Presse == 's': self.x_vel = 0 = self.y_vel B_move_length self.direction = 2, wenn Presse == 'a': self.x_vel = -B_move_length self.y_vel = 0 self.direction = 3, wenn Presse == 'd': self.x_vel = B_move_length self.y_vel = 0 self.direction = 4, wenn Presse == "Raum": self.fire_gun (), wenn Presse == 'p': pause_game = True, wenn Presse == 'o': pause_game = False, wenn Presse == 'i': self.gun = "Pistol" self.ammo = 'Unendlich' drücken, wenn == 'u': self.gun = 'Mines' self.ammo = Selbst. mine_count def shoot_coords (self, x_start, y_start, x_end, y_end): "" "Hilfe, um die Koordinaten der Grundlage von wo aus jeder Richtung zu schießen einstellen" "" self.shoot_x_start = x_start self.shoot_y_start = y_start self.shoot_x_end = x_end Selbst .shoot_y_end = y_end Klasse Zombie (Objekt): "" "ZOMBIES. Nichts wie ein Haufen von Zombies, die Sie um zu jagen. Boxhead ist schneller als Zombies, aber Zombies können diagonal bewegen "" "def __init __ (self): self.zup = photoimage (file =" images / Zombies / zup.gif ") # gibt es 8 Richtungen, die Zombies können in Selbst bewegen. Zdown = photoimage (file = "images / Zombies / zdown.gif") self.zleft = photoimage (file = "images / Zombies / zleft.gif") self.zright = photoimage (file = "images / Zombies / zright.gif ") self.zrightup = photoimage (file =" images / Zombies / zrightup.gif ") self.zrightdown = photoimage (file =" images / Zombies / zrightdown.gif ") self.zleftup = photoimage (file =" images / Zombies /zleftup.gif ") self.zleftdown = photoimage (file =" images / Zombies / zleftdown.gif ") self.x = random.randrange (game_limit.x_start, (game_limit.x_end- (game_limit.x_end / 2))) # erstellen Zombies in der linken Hälfte der Arena self.y = random.randrange (game_limit.y_start, game_limit.y_end) self.direction = 1 self.zombie = canvas.create_image (self.x, self.y, image = Selbst .zup) self.alive = True self.distance_to_b = 0 self.attacked = False def move (self, Ziel): "" "Diese Funktion wie Boxhead1.move prüft, um zu sehen, ob der Zombie wird die Kante des Spiels treffen, aber auch Tests, um zu sehen, ob der Zombie wird mit einem anderen Zombie davor zusammenstoßen. Dies hilft zu vermeiden, dass alle Zombies stapeln sich auf der jeweils anderen und froming wirklich dichte Zombie. Das ist, was das wirklich lange Codezeile unten testet "" "global boxhead1 which_zombie = 0 Kollision = False self.x_vel = 0 self.y_vel = 0 für which_zombie in Zombie_Dict: test_self = Zombie_Dict [which_zombie], wenn abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x)> 0 und abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x) <Zombie_Buffer und abs (self.y - boxhead1 .y) - abs (boxhead1.y - test_self.y)> 0 und abs (self.y - boxhead1.y) - abs (boxhead1.y - test_self.y) <Zombie_Buffer: Kollision = True anderes: übergeben, wenn Kollision = = True: pass elif Kollision == False: Wenn self.x <target.x: self.x_vel = Zombie_per_move wenn self.x> target.x: self.x_vel = -Zombie_per_move elif self.x == target.x: Selbst .x_vel = 0, wenn self.x> = window_width - 25: # x coords self.x_vel = -Zombie_per_move wenn self.x <= 0 + 5: self.x_vel = Zombie_per_move wenn self.y <target.y: self.y_vel = Zombie_per_move wenn self.y> target.y: self.y_vel = -Zombie_per_move elif self.y == target.y: self.y_vel = 0, wenn self.y> = window_height - 25: # y Koordinaten self.y_vel = - Zombie_per_move wenn self.y <= 0 + 5: self.y_vel = Zombie_per_move self.y + = + = self.y_vel self.x self.x_vel canvas.coords (self.zombie, (self.x), (self.y )) # Bewegen Sie den Zombie entsprechend basierend auf, ob er fahren soll oder ein anderer Zombie ist in seinem Weg anderes: pass def pic (self): "" "Aktualisieren Sie die Zombie-Bild basierend auf dem der 8 Richtungen, die sie auf Reisen", " "wenn self.y_vel <0 und self.x_vel == 0: canvas.itemconfigure (self.zombie, image = self.zup) wenn self.y_vel> 0 und self.x_vel == 0: canvas.itemconfigure (self.zombie , image = self.zdown) wenn self.x_vel <0 und self.y_vel == 0: canvas.itemconfigure (self.zombie, image = self.zleft) wenn self.x_vel> 0 und self.y_vel == 0: Leinwand .itemconfigure (self.zombie, image = self.zright) wenn self.y_vel> 0 und self.x_vel> 0: canvas.itemconfigure (self.zombie, image = self.zrightdown) wenn self.y_vel <0 und self.x_vel > 0: canvas.itemconfigure (self.zombie, image = self.zrightup) wenn self.y_vel> 0 und self.x_vel <0: canvas.itemconfigure (self.zombie, image = self.zleftdown) wenn self.y_vel <0 und self.x_vel <0: canvas.itemconfigure (self.zombie, image = self.zleftup) def Kontakt (self): "" "Dies ist, wie die Zombies zu tun Schäden an Boxhead. Wenn sie in Kontakt mit Boxhead com es zieht die Gesundheit von Boxhead "" ", wenn abs (boxhead1.x - self.x) <10 und abs (boxhead1.y - self.y) <10 und self.attacked == False: boxhead1 .Wohlbefinden - = 1 self.attacked = True anderes: self.attacked = False Klasse Devil (Objekt): "" "Der Teufel Class. Sie bewegen sich schneller als Zombies haben mehr Gesundheit und kann Boxhead durch Kollision mit ihm oder von ihm schießen "" "def __init __ (self) angreifen: self.x = random.randrange (game_limit.x_start, (game_limit.x_end- (game_limit.x_end / 2))) self.y = random.randrange (game_limit.y_start, game_limit.y_end) self.direction = 1 self.alive = True self.distance_to_b = 0 self.attacked = False self.attack_fire = 0 self.health = 100 self.dup = photoimage (file = "images / devils / du.gif") # 8 die Teufel Bilder self.ddown = photoimage (file = "images / devils / db.gif") self.dleft = photoimage (file = "images / devils / dl.gif") self.dright = photoimage (file = "images / devils / dr.gif") self.drightup = photoimage (file = "images / devils / dtr.gif") self.drightdown = photoimage (file = "images / devils / dbr.gif") self.dleftup = photoimage (file = "images / devils / dtl.gif") self.dleftdown = photoimage (file = "images / devils / dbl.gif") self.devil = canvas.create_image (self.x, self.y, image = self.dup) def bewegen (self, Ziel): "" "Die Teufels Bewegung ist die gleiche wie die Zombies außer dass Devils bewegen sich schneller" "" which_zombie = 0 Kollision = False self.x_vel = 0 self.y_vel = 0 für the_devil in Devil_Dict: test_self = Devil_Dict [the_devil], wenn abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x)> 0 und abs (self.x - boxhead1.x) - abs (boxhead1.x - test_self.x) <Zombie_Buffer und abs (self.y - boxhead1.y) - abs (boxhead1.y - test_self.y)> 0 und abs (self.y - boxhead1.y) - abs (boxhead1.y - test_self.y) <Zombie_Buffer: Kollision = True anderes: übergeben, wenn Kollision == True: geben elif Kollision == False: Wenn self.x <target. x: = self.x_vel Devil_move wenn self.x> target.x: self.x_vel = -Devil_move elif self.x == target.x: self.x_vel = 0, wenn self.x> = window_width - 25: # x coords self.x_vel = -Devil_move wenn self.x <= 0 + 5: self.x_vel = Devil_move wenn self.y <target.y: self.y_vel = Devil_move wenn self.y> target.y: self.y_vel = -Devil_move elif self.y == target.y: self.y_vel = 0, wenn self.y> = window_height - 25: # y Koordinaten self.y_vel = -Devil_move wenn self.y <= 0 + 5: self.y_vel = Devil_move Selbst .y + = + = self.y_vel self.x self.x_vel canvas.coords (self.devil, (self.x), (self.y)) else: pass def pic (self): "" "Aktualisierung der Bild "" "Wenn self.y_vel <0 und self.x_vel == 0: canvas.itemconfigure (self.devil, image = self.dup) wenn self.y_vel> 0 und self.x_vel == 0: canvas.itemconfigure (Selbst .devil, image = self.ddown) wenn self.x_vel <0 und self.y_vel == 0: canvas.itemconfigure (self.devil, image = self.dleft) wenn self.x_vel> 0 und self.y_vel == 0 : canvas.itemconfigure (self.devil, image = self.dright) wenn self.y_vel> 0 und self.x_vel> 0: canvas.itemconfigure (self.devil, image = self.drightdown) wenn self.y_vel <0 und Selbst .x_vel> 0: canvas.itemconfigure (self.devil, image = self.drightup) wenn self.y_vel> 0 und self.x_vel <0: canvas.itemconfigure (self.devil, image = self.dleftdown) wenn self.y_vel <0 und self.x_vel <0: canvas.itemconfigure (self.devil, image = self.dleftup) def Kontakt (self): "" "Wenn ein Teufel in Kontakt mit boxhead es zieht mehr Gesundheit als ein Zombie würde" " "wenn abs (boxhead1.x - self.x) <10 und abs (boxhead1.y - self.y) <10 und self.attacked == False: boxhead1.health - = 2 self.attacked = True anderes: Selbst. angegriffen = False def Angriff (self, boxhead1): "" "Wenn der Teufel innerhalb von +/- 200 Pixel in der X und Y-Richtung dann einen Feuerball auf boxhead 1 Mal schießt es und wartet dann 45 Schleifen zu schießen agian" "" global total_devil_attacks wenn abs (boxhead1.x - self.x) <200 und abs (boxhead1.y - self.y) <200 und self.attack_fire> 45: d_attack = Zombie_Attack (self.x, self.y, self.x_vel , self.y_vel) Devil_Attack_Dict [total_devil_attacks] = d_attack total_devil_attacks + = 1 self.attack_fire = 0 sonst: self.attack_fire + = 1 def key_press (event): "" "Diese Funktion durchläuft alle Tastendrücke an das Boxhead1.key Funktion für die weitere Analyse "" "global pause_game drücken = event.keysym boxhead1.key (drücken), wenn Presse == 'o': pause_game = False def init_game_parts ():" "" Dies baut alle inital Spielelemente, die nur einmal unabhängig von der Anzahl der Ebenen erzeugt. Zum Beispiel ist es die Anzeigetafel "" "global nach oben, unten, rechts, links unten global global global rechts links globalen current_shot globalen game_limit globalen score_board globalen boxhead1 globalen Zombie_Dict globalen game_limit up = Shot () nach unten = Shot () links = Shot (erstellt ) rechts = Shot () current_shot = Shot () game_limit = Edge_limits () boxhead1 = Boxhead () score_board = Stats () def new_level (): "" "Für jede neue Ebene alle Devils und Zombies getötet wurden so neue erstellt werden müssen. Jedes Mal, 70% mehr Zombies sind "" build_zombie = 0 build_devil = 0 für i in range (Number_of_Zombies) aufgenommen ": im Bereich z = Zombie () Zombie_Dict [build_zombie] = z build_zombie + = 1 für i (int (Number_of_Zombies / 5) ): D = Devil () Devil_Dict [build_devil] = D build_devil + = 1 def main_loop (): "" "Die zentrale Funktion für das Spiel. Es gibt 2 while-Schleifen. Das innere ist nur für eine neue Ebene und dem äußeren gebrochen while-Schleife wird nur unterbrochen, wenn boxhead Matrizen und das Spiel ist vorbei "" "global New_Level, Run_Game, Zombie_Dict, Dead_Zombie_List, Number_of_Zombies, boxhead1 init_game_parts () # erstellen gesamte Spiel Bilder wie die Kantenpuffer während Run_Game == True: global Blood_Dict Blood_Dict = {} # ein neues leeres Blut Wörterbuch zu erstellen, wenn boxhead1.health <= 0: # boxhead gestorben - game over return '! Game Over Final Score: "+ str ( boxhead1.score) + 'Finale Level: "+ str ((boxhead1.level - 1)) else: new_level () boxhead1.health + = 5 # fügen +5 bis Boxheads Gesundheits jedem neuen Level boxhead1.mine_count + = int (Number_of_Zombies / 5) # Boxhead erhält 1/5 der Anzahl der Zombies of Mines Wenn es 5 Zombies Boxhead bekommt 1 Mine während New_Level == False:. # das loop-Ebene, die bis Boxhead stirbt oder alle der Zombie läuft / Devils wurden getötet New_Level = False "" "Verschiebt die Devils and Zombies" "" für the_zombie in Zombie_Dict: wenn pause_game = True: Zombie_Dict [the_zombie] .move (boxhead1) Zombie_Dict [the_zombie] .pic () Zombie_Dict [the_zombie] .contact ( ) für the_devil in Devil_Dict: wenn pause_game = True: Devil_Dict [the_devil] .move (boxhead1) Devil_Dict [the_devil] .attack (boxhead1) Devil_Dict [the_devil] .pic () Devil_Dict [the_devil] .contact () zerstören = [] "" "Der Angriff Bereich, dass die Devils shoot" "" Wenn pause_game = True: für d_attack in Devil_Attack_Dict: Devil_Attack_Dict [d_attack] .move (), wenn Devil_Attack_Dict [d_attack] .life_span <= 0: destroy.append (d_attack) für Artikel in zerstören: canvas.delete (Devil_Attack_Dict [Artikel] .attack) del Devil_Attack_Dict [Artikel] "" "Explode die Minen" "" mine_destroy = [] für die Mine in Mines_Dict: Mines_Dict [mine] .explode (), wenn Mines_Dict [mine ] .Destroy == True: mine_destroy.append (von mir) für die Minen in mine_destroy: canvas.delete (Mines_Dict [mine] .Bild) del Mines_Dict [mine] "" "Boxhead bewegt" "" Wenn pause_game = True: boxhead1. move () boxhead1.pic () boxhead1.shot_coords_update () score_board.update () time.sleep (0,02) # Schlaf für 1/100 Sekunde zwischen Schleifen canvas.update () If Len (Zombie_Dict) == 0 und len (Devil_Dict) == 0: # wenn sie beide = 0 wird eine neue Ebene erstellt New_Level = True, wenn boxhead1.health <= 0: = True New_Level Run_Game = False boxhead1.level + = 1 Number_of_Zombies = int (float (Number_of_Zombies ) * 1,7) # Erhöhung der Zahl der Zombies in jeder Runde für Blut in Blood_Dict: # gesamte Blut für die neue Runde canvas.delete (löschen Blood_Dict [Blut]) New_Level = False print 'Game Over! Final Score: "+ str (boxhead1.score) + 'Final Level:" + str (boxhead1.level - 1) # print das Endergebnis canvas.after (30, main_loop) canvas.master.bind (" ", Key_press) canvas.pack () canvas.mainloop ()
Arduino ATtiny2313 Programmierung Schild
7 Schritt:Schritt 1: Materialien Schritt 2: Prototype und Pinout Schritt 3: Arbeiten auf dem tatsächlichen Schild Schritt 4: Installieren ATtiny Dateien Schritt 5: Einrichten Arduino als ISP Schritt 6: Anschluss der Abschirmung und Hochladen der Code Schritt 7: Was kommt als nächstes?
Heute habe ich ein kleines 3x3x3 LED Würfel mit einer ATtiny2313, die ich von vor ca. 2 Wochen. Immer, wenn ich musste die LED Würfel neu zu programmieren, wenn ich von mehr awesome Muster dachte, musste ich aus meinem Steckbrett und dann verkabeln alles wieder, die sich auf Pin-outs von ATtiny2313 und sicherzustellen, dass alles richtig angeschlossen und dann schließlich den neuen Code laden . Also ging ich auf eBay und Amazon auf der Suche nach etwas, um diese Chips zu programmieren, als ich über die Verwendung dieser Chips viel in die Zukunft planen. Nachdem er etwa eine Stunde Ich bemerkte, dass ich meine Zeit verschwenden, da es keinen Weg, ich würde etwa 20-30 Dollar für ein einfaches Schild zu verbringen. Nachdem ich eine Weile, beschloss ich eine einfache und leicht zu machen, ATtiny2313 Programmierung Schild, nachdem ich es geschafft, alles, was ich tun musste, um alle meine attinys recode 'ist es, diese einfach in der Programmierung Schild und nur in zu machen Mit wenigen Klicks haben Sie Ihren Code hochgeladen! Kein Grund zur Sorge, wenn alles verkabelt rechts und stellen Sie sicher, gibt es keine Kurzschlüsse oder alles, was einen Kurzschluss des Chips und braten kann er oder sonst etwas dieser Art. So, jetzt in diesem instructable Ich werde Ihnen zeigen, wie man eine dieser Schilde für sich selbst zu bauen! Es kostet fast nichts und dauert nur ca. 30 Minuten oder so, es zu machen. So lets get started! Schritt 1: Materialien Für dieses Projekt benötigten Materialien; Protoboard 10 Micro Farad Kondensator (oder Wert) 2 LED ist ein paar Drähte A einreihige Stiftleiste Streifen eine einzige Reihe Buchsenleiste Streifen Werkzeuge für dieses Projekt erforderlich ist; Lötkolbenlötmittel Klebepistole (Oder einfach nur gut kleben) Schritt 2: Prototype und Pinout Das Bild zeigt die Pin-Out-Diagramm, wie man Draht bis alles, Sie im Grunde alles, was verdrahten, wie in der Pin-out auf dem Arduino direkt gezeigt, aber nicht aber auf eine Lochrasterplatinen, die Kopfzeilen zu ihnen angebracht, die dem Arduino verbunden werden kann, hat als Abschirmung. Stellen Sie sicher, halten Sie die Pin-Out Diagramm des ATtiny2313 neben dir bei der Verdrahtung alles, alle vergesslich Fehler, die auftreten können, zu vermeiden. (Pin-out von ATtiny2313 von http://blog.williambritt.com/uploads/attiny2313-pinout.png Taken) Schritt 3: Arbeiten auf dem tatsächlichen Schild Alle 7 Artikel anzeigen Beginnen Sie durch Anbringen der Buchsenleisten in der Mitte der Lochrasterplatinen und setzen Sie dann die Stiftleisten in der Arduino und dann den protoboard darauf, um die genaue Position, wo die Stiftleisten einlöten zu bekommen. Dann die richtigen Stifte aus der Stiftleiste anschließen auf die Buchsenleisten nach dem Pin-out (Buchsenleisten gehen, um zum Befestigen der ATtiny2313 und Stiftleisten gehen, um verwendet werden, um die Abschirmung an die Arduino befestigen werden) Dann fügen Sie die 2 LEDs und den Kondensator und verbinden Sie diese entsprechend der Pin-out als auch sicher, dass der Kondensator richtig angebracht, wenn seine ein polarisierter Kondensator. Dann, wenn alles wurde verdrahtet verbinden Sie es mit dem Arduino und lade ein Test-Code, um sicherzustellen, dass alles funktioniert (Anleitung, wie Sie dies auf den nächsten Schritt zu tun), dann, wenn der Test durchgeführt können Sie etwas Heißkleber in der Umgebung hinzufügen die Lötstellen, um sicherzustellen, sie sind fest und haben jede Art von falschen Verbindungen nicht zu machen. Installieren ATtiny Dateien: Sie können auch einige elektrisch isolierenden Gel / glue.Step 4 verwenden Um die ATtiny2313 programmieren gibt es 3 Hauptschritte; 1) Installation der ATtiny Dateien 2) Einrichten Arduino als ISP 3) Verbinden Sie die Abschirmung und das Hochladen der Code Erste Download dieses; http://code.google.com/p/arduino-tiny/ Dieser Download enthält die Dateien, die auf der Arduino IDE, um zu programmieren und zu verwenden ATtiny Boards mit dem Arduino Programmier-Umgebung installiert werden müssen. Indem Sie die Read-me, stellen Sie sicher, dass alle Dateien ordnungsgemäß installiert sind. Sobald sie installiert sind, dann, wenn Sie gehen zu Tools-> Vorstand, sollten Sie eine ganze Reihe von neuen ATtiny Optionen anzuzeigen (Es gibt ATtiny2313, ATtiny44, ATtiny84 und ATtiny85 einige Optionen). Schritt 5: Einrichten Arduino als ISP Um die Arduino als ISP eingestellt, zuerst eine Verbindung Arduino an den Computer und öffnen Sie das Beispiel-Skizze 'ArduinoISP', indem Sie auf, Beispiele und ArduinoISP Datei. Dann laden Sie den Code, um den Arduino, indem Sie das richtige Board und rechts serielle Schnittstelle in den Optionen. Um sicherzustellen, dass Sie das richtige Programm geladen haben, im nächsten Schritt werden Sie sicher, dass das "Heartbeat" LED funktioniert wie es sein sollte (Fading und Ausschalten). Schritt 6: Anschluss der Abschirmung und Hochladen der Code Nun, wenn dies geschehen ist, schließen Sie die Abschirmung an die Arduino und Sie sollten das Herz LED Verblassen in regelmäßigen Abständen. Nun, wenn Sie sehen, die die LED zu tun, was ihre tun soll, dann das ATtiny2313 auf den Schild. Jetzt in die Arduino IDE wieder zu gehen und dann zu Tools-> Programmer und wählen Arduino als ISP. Dann in den Tools-> Boards, wählen Sie die ATtiny2313 1 Hz (Werkseinstellung stellt die Uhr des ATtiny2313 zu 1 Hz) Nach der Auswahl dieser 2 Optionen dann öffnen Sie einfach den Code und drücken Sie dann auf Hochladen, um den Code in die ATtiny2313 mit dem Arduino als ISP hochladen (Einfach gesagt, Sie die Programmierung des ATtiny2313 mithilfe des Arduino, um es an den Computer anschließen) Sobald Sie fertig sind das Hochladen den Code, dann stellen Sie sicher, dass Sie die 2 Optionen, die Sie zurück auf die ursprüngliche geändert zu ändern, so dass Sie Code in die Arduino wieder nach tun this.Step 7 hochladen: Was kommt als nächstes? Alle 7 Artikel anzeigen So, jetzt, da Sie programmieren und verwenden Sie ein ATtiny2313 können, warum nicht versuchen, diese für alle zukünftigen Projekte statt Arduino? Sie sind viel billiger als die Arduino (von 22 bis 30 US-Dollar) und sie in der Lage, 18 I / O-Pins sind und sie mit den meisten der gemeinsamen Arduino Codeumgebung Funktionen arbeiten. Die Größe von ihnen ist viel kleiner im Vergleich zu dem Arduino als auch, was sehr praktisch ist, wenn man versucht, die Dinge in kleinen Gehäusen usw. setzen Der einzige Nachteil des ATtiny2313 ist, dass einige Funktionen durch sie nicht unterstützt, so Projekte mit ihnen nicht möglich ist und die Menge an I / O-Pins sind begrenzt. Aber auf der hellen Seite, für kleine / einfache Projekte sind großartig! Wenn Sie Projekte auf der Basis der ATtiny2313 machen oder wenn Sie diese Programmierer zu machen, dann sicher sein, ein Bild oder ein Video davon hochladen und schreiben Sie einen Kommentar unten zu sein :)
Fading RGB Keyboard Licht
8 Schritt:Schritt 1: Scanner Ernte Schritt 2: Teilnahme Schritt 3: Schaltungsentwurf Schritt 4: Radierung Schritt 5: Circuit Board Bevölkerung Schritt 6: Vorbereitung für die Codierung Schritt 7: Coding! Schritt 8: Der letzte Schliff
Old electronics sind weit verbreitet und können in der Regel in die coole Gadgets recycelt und in andere Projekte integriert werden. Diese Instructable wird durch den Prozess der mit einem alten Scanner, einen Fading-Regenbogen-Tastatur Licht machen zu gehen. Die Inspiration für dieses Projekt kam, als ich mit dem Scanner-Lichtleiste spielen und bemerkte, dass das Licht von der es kam in einem Winkel, anstatt gerade heraus. Ich habe diese Eigenschaft, das Licht hinter meiner Tastatur (auf meinem Monitor) zu platzieren, anstatt darüber. Das Licht scheint nach unten in einem Winkel, Beleuchtung meiner Tastatur für alle, die Late-Night-Programmierung Sitzungen. Diese Instructable wird ein paar Fertigkeiten zu vermitteln, unter anderem: Schaltung Erstellung und PCB machen Low-Cost-Komponente Ernte und Erwerb Programmierung Das Ergebnis wird ein reibungslos Verblassen Regenbogen-Licht, um Ihre Tastatur zu erhellen und sorgen für einen angenehmen Schein selbst in den dunkelsten Stunden der Nacht. Es hat auch Lichterfassungsfunktionen, so kann es ein-und ausschalten automatisch! Das fertige Produkt zu sehen, hier zu arbeiten werden: Schritt 1: Scanner Ernte Bei weitem die meisten von entscheidender Bedeutung, Teil des Projekts ist die RGB-Scanner Lichtleiste. Sie sollten in der Lage, eine (oder ein paar) kostenlos off von Craigslist oder Freecycle erhalten, oder Sie können einige billig an einem Secondhand-Laden zu kaufen. Einige Scanner enthalten Fluoreszenzlicht Bars, und während diese für eine Tastaturbeleuchtung arbeiten, werden sie mit dem begehrten glatten Regenbogen-Effekt nicht liefern. Daher werden sie nicht in diesem Instructable abgedeckt werden. Wenn Sie den richtigen Scanner gefunden, können Sie sie zu demontieren, um die lange RGB-Lichtleiste mit der Kunststofflinse zu offenbaren. Es sollte ein Flachbandkabel verbunden. Mit Hilfe eines 3V AA-Batteriepaket, sondieren die Bandkabelanschlüssen, bis Sie eine, die eine Farblicht-up macht finden. Mein LED war Common-Anode, so dass alle Farben teilten einen positiven Anschluss. Ich habe irgendwo gehört, daß der gemeinsame Anschluß ist normalerweise der linken oder rechten Spur auf dem Flachbandkabel, so konnte man es durch die Anwendung der positiven oder negativen Batteriekabel (wenn Sie Ihre LED stellt sich heraus, Common-Kathode) und dann die Prüfung der anderen Kontakten zu starten . Wenn Sie die richtige ist beim ersten Versuch nicht finden, keine Sorge - diese kleinen Sperrspannungen sollte nicht schaden der RGB-LED. Sobald Sie festgestellt haben, welche Farben und gemeinsame Anschlüsse entsprechen, welche Kontakte auf das Flachbandkabel, Lötdrähte (sie müssen nicht, um verschiedene Farben zu sein), auf jedem Endgerät und stellt fest, welche führen, wo, und dichten die mess up mit Heißkleber. Dadurch werden die zerbrechlichen Spuren Brechen später zu verhindern. Ich fügte hinzu, ein Buchsenleiste und farblich die Stifte mit Filzstiften auf einfachere Identifizierung zu ermöglichen. Bemerkte ich auf meinem Lichtleiste, die die LED ist eigentlich nur an einem Ende - die Kunststofflinse verteilt das Licht etwas gleichmäßig entlang der Breite des Stabes, elmininating die Notwendigkeit für mehrere LEDs. Ich fand, dass ganz interesting.Step 2: Teilnahme Alle 8 Artikel anzeigen Ich sourced meine Teile an verschiedenen Stellen und war überraschend in der Lage, meine Kosten auf € 0. Ich werde die unten benötigt Teilliste halten: ATtiny85 Mikrocontroller: diese ist das Gehirn des Projekts - erhalten eine kostenlose Probe von Atmel OPT101 Lichtsensor: Dieser liest das Umgebungslicht im Raum - erhalten eine kostenlose Probe von Texas Instruments USB-Anschluss und Draht: Mächte das Projekt - nehmen Sie eine von a gebrochenen USB-Gadget Stiftleisten und Stecker: anschließen Energie & LED an der Leiterplatte - Quelle sie von Junk-Leiterplatten kupferkaschierte Leiterplatte: mit Lochrasterplatinen ersetzt werden - weg von einem großen Grundplatte geschnitten oder "pour" von einem Junk-Leiterplatte, oder neue kupferkaschierte, wenn Sie es 0.1uF Keramikkondensator: schützt die OPT101 von Spikes - bekommen sie von einem Schrottleiterplatte 10uF Elektrolytkondensator: glättet USB Spannung (optional) - bekommen sie von einem Schrottleiterplatte 130Ω, 140Ω , 150Ω Widerstände: Protect LED Durchbrennen (Werte sind allgemeine, nicht exakt) - erhalten sie von Junk-Leiterplatten Sie haben viele der Komponenten herumliegen, und die meisten diejenigen, die Sie nicht bereits besitzen, können leicht gekauft oder abgetastet werden online. Wie Sie sehen können, habe ich ausführlich recycelt alte Leiterplatten, selbst wenn man die große kupferkaschierte Spuren als Mini-Format Leiterplatten zu verwenden. Sie sollten in der Lage, alles, was Sie sich kostenlos oder in der Nähe von it.Step 3 zu erhalten: Schaltungsentwurf Nachdem Sie alle Teile erworben haben, ist es Zeit, um zu bestimmen, wie man sie alle zu verbinden. Ich habe einen Schaltplan in der Bilder Sektion befestigt ist, so dass Sie es für Anweisungen freuen. Wenn Sie musterte Schaltpläne nicht genießen, ist die Schaltung einfach genug, dass man einfach ablesen, welche Pins zu verbinden, wo. Die 10uF Kondensator glättet das USB Spannung vom USB-Netz männlichen Pin-Header, so dass es zwischen + 5V und Masse (GND) verbunden wird. Die Seite mit dem Streifen geht an GND. Die ATTiny Vcc und GND Pole mit + 5V und GND verbunden. Pins 0, 1 und 4 des ATTiny gehen durch die Widerstände an den RGB-Stiftleiste, und eine zusätzliche Stiftstecker wird an das Ende der Kopfzeile, um die positive Spannung an die Lichtleiste liefern aufgenommen (dies liefert negativ, wenn Sie eine Common-Kathode LED). Am OPT101 Lichtsensor Seite der Schaltung sind Anschlüsse 4 und 5 miteinander verbunden sind und dann an den Stift 3 ATTiny Pin 1 ist mit + 5V und Stifte 3 und 8 verbunden gehen miteinander und mit GND verbunden. Die 0,1 uF Kondensator zwischen + 5V und GND der Nähe des OPT101 verbunden - glättet diese die Spannung an den Chip mehr reibungslos laufen. Wenn Sie etwas wissen, wie die Schaltung zusammen geht, kann es helfen, sie auf ein Steckbrett auslegen. Auf diese Weise können Sie sicherstellen, dass alles funktioniert, bevor sich auf einer Leiterplatte oder Lochrasterplatinen. Phewft! Das war eine Menge, aber ich hoffe, dass es geholfen hat. Elektronik kann Trickly kleinen Stinker ab und zu sein. ! Auf den fun stuff Schritt 4: Radierung Sobald Sie den Schaltkreis (mehr oder weniger) zu verstehen, ist es Zeit, um die Leiterplatte zu ätzen. Früher habe ich die Tonerübertragungsverfahren, um mein Stück aus recyceltem Kupfer-plattierten ätzen, aber auch andere Methoden gibt, einschließlich der Fotolackverfahren und einfach mit einem Permanent-Marker, um Ihren Kreislauf auf die Platte zu ziehen. Um die Platine zu ätzen, stellen Sie zunächst die Ebene, die die Säure widersteht, indem er die Leiterbahnen entweder in Farbe oder in einem eigenen PCB-Design-Programm. Ich habe mir in Paint nur durch die Übertragung der schema in realen Strecken nach Spuren, mit dem richtigen Abstand für Komponenten (siehe Bild zum Beispiel). Wenn Sie die Tonerübertragungsmethode wählen, drucken Sie diese aus auf die wachsartige Seiten einiger Aufkleberpapier mit Laserdrucker (Tintenstrahldruckern wird nicht funktionieren) von der Einstellung höchste Tonerdichte - dies ist in den Druckereinstellungen, die online sein können, gefunden. Ich hatte, um die prozentuale Größe, die mein Bild in gedruckter, um die korrekte Komponente Abstand zu justieren. Nachdem es gedruckt wurde, prüfen Sie, ob die Komponentenstifte reihen sich mit den Pads und heizen Sie Ihr Bügeleisen auf ein mittlerer Hitze. Während es heizt, wischen Sie die Platine mit Aceton und stellen Sie die Papier auf. Halten Sie das Papier fest, so dass es nicht verschmieren, und drücken Sie sanft das Eisen auf der Oberfläche. Machen Sie ein paar Durchläufe, stark drücken. Nach ein paar Minuten, setzen Sie das Bügeleisen abkühlen lassen und genießen Sie die Platine in Wasser, um das Papier zu lockern. Nach 10 Minuten abziehen das Papier ab. Wenn alles geklappt hat, haben Sie eine Schaltung zu widerstehen! Wenn es nicht funktioniert, nicht entmutigen lassen - ich musste mehrmals versuchen, meine Technik richtig zu machen und squishing den Toner übermäßig zu verhindern. Nach Ihrer Resist angewendet wird, ist es Zeit, Ihre Hände schmutzig und zu ätzen der Platine. Dies ist einer der am meisten Spaß Teile der Leiterplatte Schöpfung. Schauen NurdRage Video auf der Leiterplatte Ätzmittel, und dann holen je nachdem, was Ihnen am besten passt. Die meisten Leute benutzen Eisenchlorid oder Salzsäure mit Wasserstoffperoxid, aber da ich weder, habe ich verdünnte Salpetersäure, wie NurdRage beschreibt in seinem Video. Der Spielplan wird in dem Ätzmittel und lassen Sie sich für ein paar Minuten sitzen, die Überwachung der Fortschritte der Radierung. Sobald alle Kupfer entfernt wurde, nehmen Sie die Platine (und bitte Handschuhe tragen!) Und waschen Sie es in Wasser. Wischen Sie die Ätzung mit Aceton oder Alkohol und bewundern Sie Ihr Werk! Das Kupfer wird sehr schön und glänzend Schritt 5: Circuit Board Bevölkerung Alle 13 Artikel anzeigen Mit geätzt Board, um den hübschen Kupfer freizulegen, können Sie jetzt beginnen, den Aufbau der Schaltung. Um zu beginnen, Bohrungen für alle Komponenten auf den Pads. Ich habe eine 3/64 "Holz / Metall Bohrer, aber ich bin sicher, dass eine geeignete Leiterplatte Bohrer besser funktionieren würde. Ich wusste nur nicht irgendwelche kleineren Größen erhältlich. Nachdem Sie die Löcher gebohrt haben, können Sie den optionalen Schritt des Verzinnen das Board zu tun. Indem eine dünne Schicht aus Zinn auf dem Kupfer verbessert die Korrosionsbeständigkeit und macht Löten erleichtern. Zinn der Vorstand, schmieren einfach Fluss auf ihn und dann Zinn die Spitze des Lötkolbens (flache Spitzen besser für Verzinnen). Ziehen Sie die Lötkolbenspitze über die Stränge des Vorstandes. Fast magisch, werden sie Silber drehen wie der beheizte Fluss reinigt die Spuren und ermöglicht Lot, um das Kupfer zu benetzen. Jetzt können Sie wirklich bevölkern das Forum. Befolgen Sie die Anweisungen auf den Aufbau der Schaltung ab Schritt 3, fügen Sie die Komponenten. I vorgesehen Bilder des Prozesses. Bevölkerung ist ganz einfach - nur finden, eine Komponente, Pop in seinen Platz, überprüfen Sie, dass Sie es richtig, und dann erwärmen Sie die Kabel mit dem Bügeleisen und eine kleine Menge von Lot. Ich fand, dass beim Hinzufügen der Cut-up-Bits des großen IC-Sockel für den kleineren ATTiny, half es, den Chip in die Buchsenteile setzen, um eine korrekte Ausrichtung zu gewährleisten. Während Sie Löten sind, fügen Sie eine Zwei-Pin-Buchsenleiste mit den roten und schwarzen Kabel aus dem USB-Stecker. Achten Sie darauf, das Kabel zu verlängern, falls erforderlich, so dass Ihre Tastaturbeleuchtung kann vom USB-Anschluss des Computers an den Monitor zu verlängern (oder wo auch immer Sie sich entscheiden, es zu mounten). Als Randbemerkung, habe ich Jumper in der Gestaltung meiner Bord. Manchmal, wenn das Routing der physischen Spuren, ist es notwendig, haben eine Spur überqueren eine andere zwar nicht mit elektrischem Kontakt. Ein Jumper ist ein Draht, der physisch geht über die Spur, so dass solche Designs zu arbeiten. Ich habe einige Bits der Single-Core-Draht-Pads (und Stifte 4 & 5 des OPT101) über andere Spuren miteinander zu verbinden, wie dies in ein paar von den Bildern zu sehen. Es ist ein kleiner Tipp hilfreich für die Gestaltung Ihrer eigenen circuits.Step 6: Vorbereitung für die Codierung Um die ATTiny zu programmieren, die mit Abstand einfachste Weg ist es, ein FTDI-Programmierer verwenden. Das Gerät passt in den USB-Port Ihres Computers und Programme der ATTiny, ohne zusätzlichen Aufwand. SparkFun hat eine gute FTDI-Programmierer , aber die Ausgaben 20 € ist nicht das Ziel dieses Projektes, so dass ich nicht mit dieser Option zu gehen. Die zweit einfachste Ansatz wäre, ein Arduino mit ein klein wenig von zusätzlichen Schaltungen verwenden, um die ATTiny programmieren. Die Website 42 Bots hat ein gutes Tutorial über diese, die gefunden werden können hier . Allerdings habe ich auch nicht besitzen ein Arduino, so dass hat mich mit einigen äußerst kreative Möglichkeiten. Ich habe die parallele Schnittstelle (und eine gehackte Parallelkabel) auf meinem Linux-Rechner, zusammen mit drei 220Ω Widerstände und ein Steckbrett, um meine ATtiny85 Chip zu programmieren. Wenn Sie sich entscheiden, diesen Weg zu gehen, haben und sämtliche anderen "normalen" Optionen, sind hier einige Anweisungen: Nehmen Sie diese Verbindungen auf dem Steckbrett Parallel pin 1 bis ATtiny85 pin SCK, indem Sie 220Ω Widerstand Parallel Pin 2 bis Pin ATtiny85 MOSI, indem Sie 220Ω Widerstand Zylinderstift 11 bis ATtiny85 Pin MISO, indem Sie 220Ω Widerstand Zylinderstift 16 bis ATtiny85 Pin RESET, durch keine Widerstände Zylinderstift 18 bis ATtiny85 Pin GND, durch keine Widerstände USB-Anschluss + 5V, um ATtiny85 + 5V USB-Anschluss GND zu GND ATtiny85 Überprüfen Sie, dass Sie die richtigen Pin-Nummern mit einem Multimeter, um die Drähte zu untersuchen haben - die Farben ändern herunterladen und installieren Sie das Arduino-Editor Laden Sie die Arduino Tiny Core und entpacken Sie den Kern (Ordnername "winzig") in den Warenkorb "Hardware" Ordner im "Skizzenbuch" Ordner öffnen Arduino-Editor und wählen Sie die Option ATtiny85 1MHz von den Tools> Boards Wählen Sie im Menü "Parallel Programmer" von den Tools> Programmierer-Menü Mit dem LED blinkt Beispiel Skizze, traf den Upload-Button und hoffen, dass für den Erfolg! Wenn es gibt einen Fehler zu Berechtigungen, Google den spezifischen Fehler und wenden Sie die korrekte fix / Terminal-Befehl Die obigen Anweisungen können auch bei Verwendung von anderen Programmierern, jedoch ohne den Schritt über den Anschluss des parallelen Anschluss an die ATTiny folgen. Achten Sie darauf, auch das Recht Programmierer wählen. Eines der besten Teile des Arduino Tiny Core ist, dass es erlaubt Ihnen, die ATtiny85 Chip in der sehr benutzerfreundlich, intuitiv Arduino-Programmiersprache zu programmieren. Dies ermöglicht es jüngeren Köpfen sowie etwas nicht-technische Menschen, um die Programmierung zu lernen und dabei Spaß haben. Ich weiß wirklich nicht, ob ich dieses Projekt abgeschlossen haben, wenn ich nicht in der Lage, um den Arduino Sprache zu verwenden war. Es vereinfacht den Prozess erheblich. Der Kern ermöglicht auch eine dritte Stift auf ein PWM-Ausgang auf der ATtiny85 sein. PWM steht für Pulse Width Modulation, und wird häufig verwendet, um die Intensität des Lichtes und die Geschwindigkeit der Motoren zu steuern. Verwenden von PWM auf der ATTiny, ist es möglich, die Helligkeit jeder LED-Farbe ändern, effektiv eine glatte Regenbogen aller möglichen Zwei-Farben-combinations.Step 7: Codierung! Coding ist einer der schönsten Teile des gesamten Projekts. Wie bereits erwähnt, wurde die Arduino IDE zum Codieren, was das Verfahren erheblich vereinfacht eingesetzt. Sobald Sie ein Programmierer eingerichtet und haben Ihre Software bereit zu gehen, sind Sie bereit, Typisierung zu erhalten! Oder Kopieren und Einfügen, wie der Fall auch sein mag. :) Dies wird lang sein, aber ich hoffe, es wird Ihnen auch helfen, und wenn nichts anderes, wecken Interesse bei der Codierung. Ich legte die Arduino .ino Datei sowie die PastBin Link mit Zeilennummern. Ich werde auch durch zu gehen, was in der Regel jedes Bit der Code tut. http://pastebin.com/j7zYH6g9 Dieser Code wird davon ausgegangen, dass Sie die schematische in Schritt 3 festgelegt sind. First off, Zeilen 1-11 einige Variablen, die im gesamten Programm verwendet wird eingestellt. Es ist vor allem allgemeine Sachen wie dem Ein- / Ausgänge entsprechen die Zahlen, die Rate, mit der Regenbogen soll verschwinden, und die Schwelle, die der Lichterfassungs sollte, zu reagieren. Ich werde mit Linien 8-11 in einem Augenblick erhalten. Zeilen 13-18 einfach auf alle Pins als Ausgänge (der Lichtsensor Pin eingegeben wird standardmäßig). Leitung 17 ändert die Farbe vollständig ausgeschaltet werden, indem die im nächsten Absatz beschriebenen Funktion. Zeilen 49-53, die Change () Funktion, liefern die Basis für dieses Programm. Grundsätzlich nimmt die Funktion einen Wert von 0 bis 255 für die einzelnen Lichtwert für jede Farbe und dann schreibt es in die richtige PIN, mit der PWM-Signal zuvor diskutiert. Da meine LED ist üblich-Anode (positive gemeinsame), so wird der Wert 0 (Aus / Boden) bewirkt jedoch, dass die Farbe wird auf volle Helligkeit sein. So, um den gewünschten Effekt zu schaffen, in dem 255 zeigt an, volle Helligkeit, werden die Farben von 255 subtrahiert, um sie umzukehren. Gehen wir zurück bis das Programm beginnt die Schleife () -Funktion in Zeile 20. Danach Linien 21-27 überprüfen, ob es dunkel ist mit dem in der Variablen Abschnitt eingestellten Schwellenwert. Die if / else-Anweisung hat die zusätzliche Funktionalität zu überprüfen, ob die dunkle Variable wird bereits eingestellt - wenn es bereits dunkel ist, dann wird das Programm nicht setzen Sie ihn auf dunklen wieder sein. Linie 26 ist Teil der komplizierteste und ehrfürchtiges Teil dieses Programms. Ich wollte nicht meine Tastatur Licht die ganze Nacht bleiben (weil ich selten bis um 3 Uhr morgens auf dem Computer), so dass ich beschloss, etwas pizazz mit einem Auto-off-Funktion hinzuzufügen. Ich musste mehrere Blickwinkel der Annäherung an das Problem zu versuchen, bevor ich fand eine, die funktioniert. Die verstrichene Zeit Funktionen nicht scheinen, um die Arbeit zu tun, und wie der ATTiny nicht über eine Echtzeit-Uhr, konnte ich nicht nur die Zeit zu lesen. Dieses System funktioniert, indem die Zeit, um einen Regenbogen in Zeile 8. Führen Sie dann auf der Grundlage der Anzahl der Stunden, I-Eingang wie die Zeit das Licht sollte bleiben, berechnet er, wie viele Regenbögen sollte abzuschließen, nachdem es dunkel wird nimmt. Die if-Anweisung vor dem Haupt ranbow Programm (Zeile 28) überprüft, ob es dunkel ist und überprüft, dass das Programm noch mehr Regenbögen zu laufen. Zeile 41 inkrementiert den Zähler jedes Regenbogens. Und schließlich, Zeile 26 setzt den Regenbogen-Zyklus-Zähler, wenn es hell wird. Dies zeigt die unglaubliche Kraft der Code. Indem einfach ein paar Zeilen Text in ein Programm, können Sie erstaunliche Funktionen, sein fast unmöglich, mit Hardware machen möchte hinzufügen. Dies ist einer der Gründe, warum ich so sehr liebe Programmierung. Es ermöglicht mir, meine Ideen in die Tat in einer Welt, die einzige wirkliche Sache mir Begrenzung ist meine Vorstellungskraft gesetzt. Um durch alle Farben des Regenbogens einpacken dieses langwierigen Erklärungen, Linien 29-40 Zyklus. Grundsätzlich ist die Regenbogen-Code funktioniert, indem Sie mit einer Farbe (zB rot) bei voller Helligkeit. Dann bewegt sich der for-Schleife nach und nach den Rot-Wert nach unten und bewegt den Grün-Wert auf, bis die grüne ist bei voller Helligkeit. Der Vorgang wiederholt sich, bis blau ausblendet und rot ist wieder einmal die dominierende Farbe. Der letzte Teil des Programms ist die else-Anweisung in den Zeilen 43 bis 46 vorhanden, das die Licht, wenn es nicht dunkel oder wenn sie auf mehr als 8 Stunden (die timeout_hours variable) .Schritt worden 8: Der letzte Schliff Sorry über die ultra-lange Erklärung meines Codes! Ich hoffe, dass es Ihnen geholfen hat, though. Ich habe versucht, es zu erklären, denn zu wissen, wie man programmiert ist so eine wertvolle Fähigkeit - es eröffnet Türen für neue Projekte, Aufträge und Fähigkeiten, und vor allem, es macht Spaß! Sobald Sie Ihren Code durchgeführt und Ihre Leiterplatte erstellt, schließen Sie das USB-und RGB-Stecker und probieren Sie es aus! Wenn Sie den Lichtsensor mit dem Finger abdecken, oder drehen Sie das Licht aus, sollte der RGB-Streifen zu aktivieren und beginnen, glatt durch den Regenbogen verblassen. Wenn Sie, um es einzuschalten bei einer helleren Umgebungslicht möchten, können Sie den Schwellenwert variabel einzustellen, und um sie verblassen schneller oder langsamer, können Sie die variable Rate ändern. Meine Tastaturbeleuchtung kann hier in Aktion sehen: Nachdem Sie mit Ihrem fertigen Gadget zufrieden sind, installieren Sie es! Ich habe eine zweiseitiges Klebeband, um die Leiterplatte auf der Rückseite von meinem Monitor, wo sie das Licht hinter meinem Monitor liest befestigen. Ich legte die Lichtleiste nach unten auf meiner Tastatur. Der USB-Anschluss bequem Falten weg hinter meinem Schreibtisch und Stecker in der Rückseite meines Computers. Das war einer meiner Lieblings-Projekte, und ich hoffe, Sie werden es auch genießen, wenn Sie sich entscheiden, es zu wiederholen. Ich lernte einige tolle neue Fähigkeiten auf dem Weg, wie Leiterplattenerstellung, Arduino-Programmierung, und Durchhaltevermögen (der Code nicht immer leicht zu kommen). Allerdings bin ich am meisten zufrieden mit dem Ergebnis - ein angenehmes Licht aktivierte Regenbogen auf meiner Tastatur zu erhellen, wie ich oben bleiben viel zu spät schreibe dies sehr Instructable. ;)
AVR Programmierung mit Arduino, AVRdude und AVR-gcc
7 Schritt:Schritt 1: Was ist und AVR Warum sollte mich das interessieren? Schritt 2: Der Programmer Hardware Schritt 3: Die Programmierung Schritt 4: Das Makefile Schritt 5: Blinkende und Kompilieren Schritt 6: Endstromkreis Schritt 7: Zusätzliche Ressourcen
AVR ist eine gemeinsame, kostengünstige Art der Mikro-Controller, der mag einschüchternd, mit zu arbeiten, aber ärgern Sie sich nicht! Sobald Sie die Werkzeuge einrichten und grundlegende Wissen, das sie nicht nur nützlich, sondern notwendig, neue Projektideen, die Dir einfällt zu können! Dieses Lernprogramm zielt darauf ab, ein paar Aufgaben zu erfüllen Erklären Sie, was ein AVR-Chip ist und warum es sinnvoll ist Geben Sie eine detaillierte Wegbeschreibung, um eine Arduino als ISP-Programmer einrichten Geben Sie ein einfaches Beispiel-Projekt mit Code erklärt mit der avr-gcc-Compiler und avrdude, um das Programm zu installieren, anstatt die Arduino IDE Um diese gesamte Tutorial abzuschließen, benötigen Sie: ATtiny85 (Andere Versionen wird auch funktionieren, wird aber nicht im Detail erläutert) Arduino Uno (Andere Versionen wird auch funktionieren, wird aber nicht im Detail erläutert) Ein Computer, der mit dem Arduino 5 Widerstände und 5 LEDs Schnittstelle kann Bitte lassen Sie mich bei Fragen oder Problemen, die Sie in den Kommentaren haben wissen, und ich werde versuchen, sie umgehend zu beantworten Schritt 1: Was ist und AVR Warum sollte mich das interessieren? AVR ist ein Mikro-Controller, die verwendet werden können, um den Fluss von Elektrizität unter Verwendung von Software zu leiten. Es kann verwendet werden, um Geräte zu wechseln, steuern im Puls-Weiten-Modulation, gelesenen Werte von Sensoren und verarbeiten die Daten, um mit der Umgebung in Wechselwirkung tritt. Darüber hinaus sind die AVR-Chips sehr klein. Es ist der Chip, der die Arduino steuert. Zum Beispiel ist die ATMega328 knapp einen Quadratzentimeter groß, dennoch enthält 23 IO-Pins. Es erfordert auch nur 1.8-5.5V zu bedienen. Dies kann Ihnen helfen, Ihre Arduino Projekte nach unten verkleinern, um tragbare tech oder kleiner, eleganter robots.Step 2 zu erstellen: der Programmierer Hardware AVR-Chips können mit einer Vielzahl von Hardware von einem einfachen seriellen Kabel an einen dedizierten AVR Programmierer und Entwicklungsstation programmiert werden. Obwohl jedes dieser Verfahren hat seine eigenen Vor- und Nachteile, werde ich Sie sich mit einem Arduino konzentrieren. Das Arduino ist eine große Mikrocontroller-Prototyping-Plattform. Arduino Uno verfügt über IO-Pins mit Header angeschlossen gebrochen. Es ist komplett mit allen benötigten Teile enthalten sind, um die an Bord Mikrocontroller wie ein Kristall und Netzregulierung führen. Es hat auch eine eigene IDE und Programmiersprache, die ganz ähnlich wie C mit einem Programm ist, kann es verwendet werden, um neue Software auf AVR Chips blinken. Die IDE enthält ein Programm namens ArduinoISP, die angeblich genau das zu tun ist. Leider ist es sehr pingelig und selten arbeitet mit einigen Modellen von Arduino. Eine Variante auf dem Programm, die von Adafruit konsequenter funktioniert gemacht kann an diesem Ort gefunden werden. Wenn Sie mit Arduino Uno sind, dann empfehle ich das letztere Programm, wie ich hatte viel Mühe mit der offiziellen one.Step 3: die Programmier Ein AVR-Chip kann auf verschiedene Arten programmiert werden. Installieren Sie die Arduino Bootloader, um die IDE und Sprachgebrauch Montage zu verwenden. Obwohl dies sehr schwer zu lesen und zu schreiben, ist es sehr effizient sein kann. Verwenden Atmel offiziellen IDE Atmel Studio, aber es ist nur unter Windows verfügbar ist, nicht unter Linux oder Mac erstellen Programm in Ihrem Lieblings-C oder Text-Editor kompilieren und Flash mit avr-gcc und avrdude. Dies bietet einen schönen Kompromiss zwischen Lesbarkeit und Effizienz sowie die Arbeit auf allen Plattformen. Das werde ich ausführlich die vierte und letzte Option. Viele Redakteure werden dafür arbeiten, wie Sie einfach das Schreiben eines C-Programms werden: Eclipse Notepad ++, vi, sowie vieles mehr. Bitte laden Sie sich die angehängte Datei led_flash.c und Makefile. Ich habe eine ATTiny 85 für dieses Projekt. Ich werde zunächst den Code zu erklären. Die erste Zeile des Codes ist: #include <avr / io.h> Dies importiert die Konstanten bezüglich Ihrer AVR-Chip in das Programm. Wenn Sie das Programm kompilieren, müssen Sie die Art der AVR-Chip, mit dem Sie angeben. Die nächsten Import: #include <util / delay.h> Dieses enthält die Funktion, um den Chip während der Schleife anzuhalten. Als nächstes kommt einige Definitionen: #define shift_light_up (Port) Port << 1 #define shift_light_down (Port) Port 1 >> Definiert Makros, um das Licht nach oben und unten die Kette um einen Schritt verschieben. #define register_set_output (Register) Register = 0b11111111 #define enable_first_light (Port) port = 0b00000001 Definiert Makros, um eine ganze Register zur Ausgabe festzulegen, und das erste Licht zu ermöglichen. Diese Definitionen erstellen wesentlichen Makros, so dass wir nicht brauchen, um den Code am Ende höher verwenden. Es kann damit der Code, um viel besser lesbar als zuvor. Setzen des Registers auf alle 1-en in Binär Ursachen alle Stifte ein Ausgang zu sein, eher als Eingabe. Der Port setzt dann den Wert des Stiftes zu hoch oder zu niedrig. Port << 1 verschiebt den Stift aktiviert werden um 1 Stelle. Port >> 1 bewegt sich in die entgegengesetzte Richtung. boolean is_last_pin (uint8_t * Port) { if ((* Port & 0b00010000)> 0) return true; sonst return false; } boolean is_first_pin (uint8_t * Port) { if ((* Port & 0b00000001)> 0) return true; sonst return true; } Zwei Funktionen, die den einfachen Test, ob die erste oder letzte Stifte durch die Beleuchtung noch erreicht werden können. Auch dies macht die spätere Code lesbarer. int main (void) { register_set_output (DDRB); // Setze alles ausgegeben enable_first_light (PORTB); // Stellen Sie die erste Licht auf boolean up = true; while (true) { _delay_ms (100); // Abhängig von der Taktrate des Chips muss Geschwindigkeit eingestellt werden if (is_first_pin (& PORTB) == true) // überprüfen, ob es zu Beginn ist up = true; else if (is_last_pin (& PORTB) == true) // überprüfen, ob es am Ende ist up = false; wenn (bis == true) PORTB = shift_light_up (PORTB); // Umschalt unsere leuchten sonst PORTB = shift_light_down (PORTB); // Nach unten Umschalt unser Licht } } Dies ist der Hauptteil unserer Funktion. Die Funktion int main (void) wird aufgerufen, wenn der Chip startet. Zunächst aktivieren Sie die Register B um alle Ausgänge sein. Dann setzen wir das erste Licht auf und erklären, ein boolean, die die Richtung zu gehen, erinnert. Jede Schleife ersten Verzögerungen für 0,2 Sekunden, überprüft dann, wenn die Richtung ändern muss. Verschiebt schließlich das Licht in der gegebenen Richtung, und wiederholt die Schleife. Das ist es! das endgültige Programm ist etwas abstrahiert, damit sie sehr leicht lesbar. Als nächstes: Das Makefile, um die Zusammenstellung und blinkende Prozessschritt 4 zu automatisieren: Das Makefile Machen wird verwendet, um den Prozess des Aufbaus eines Programms zu automatisieren. Sie können Setup ein Makefile, damit der gesamte Prozess auf einen Befehl zu sein ", machen Programm". Verwendung make erstellt Makros problemlos betreiben eine Sammlung von Befehlen in Bezug auf den Aufbau eines Projekts. Der erste Befehl ist derjenige gewöhnlich die Bezeichnung, so kann es nützlich sein, eine Hilfe Makro erste haben. Hilfe: @ echo 'Help-Details:' @ echo 'hex: kompilieren Hex-Datei' @ echo "Flash: Hex-Datei installieren" 'Programm: kompilieren und installieren hex "echo Das erinnert Sie immer, wie Sie haben das Programm up statt, die im Wege der Code aussehen, wenn Sie vergessen, eingestellt. Der nächste Teil dieses Makefile ist hex. hex: avr-gcc -Os -DF_CPU = 8000000 = -mmcu ATtiny85 -c led_flash.c avr-gcc -DF_CPU = 8000000 = -mmcu ATtiny85 -o led_flash.elf led_flash.o avr-objcopy -O IHEX led_flash.elf led_flash.hex rm led_flash.o rm led_flash.elf Dies macht den gesamten Prozess, um den Chip zu kompilieren. Der Prozess, ein Programm für AVR zu kompilieren ist ein bisschen schwierig und lang, aber dieser Teil verhindert, dass Sie benötigen, um jeden Teil des Verfahrens zu erinnern. Die wichtigsten Teile dieses Kompilierungsprozess zu erinnern ist die --mmcu = ATtiny85 und die led_flash. Diese müssen je nach Ihrem eigenen Projekt geändert werden. Wenn Sie mit einem anderen AVR-Chip sind, einfach ATtiny85 verändern die Art, die Sie verwenden. Wenn die Dateien nicht aufgerufen led_flash.c, dann alle Instanzen von led_flash ändern mit dem Dateinamen. Schließlich die DF_CPU = 8000000 legt die Taktgeschwindigkeit in der Mikro-Controller. Viele Gegenstände, wie Verzögerungen funktioniert nicht richtig, wenn Sie diese auf den korrekten Wert eingestellt. Wenn Sie einen anderen Chip zu verwenden, oder ändern die Geschwindigkeit in irgendeiner Weise entnehmen Sie bitte dem Datenblatt für Ihr AVR-Chip. Flash: avrdude -c arduino -p ATtiny85 -P /dev/tty.usbmodemfd121 -U Flash: w: led_flash.hex Dies installiert das Programm auf die AVR-Chip. Beachten Sie: -c arduino -p ATtiny85 -P /dev/tty.usbmodemfd121 Hier wird die Art des ProSTEP 5: Blinkende und Kompilieren Jetzt haben Sie das Makefile Setup sowie die Programmierung Hardware-Setup, geben Sie einfach machen Programm Dies wird den Code zu kompilieren und installieren Sie das Programm auf dem AVR. Herzlichen Glückwunsch! Nur noch einen Schritt, indem Sie den Chip in der eigentlichen circuit.Step 6: Endstromkreis Endstromkreis verwendet viele Widerstände und LEDs, ist aber sehr einfach zu bauen. Schließen Sie einfach an den 5V + VCC Pin, Grundstück zu GND und die IO-Pins, um eine Reihe von LEDs Löten Sie die Schaltung auf eine Lochrasterplatinen und bauen eine Spaß Behälter, um Ihre neuen Fähigkeiten zeigen, um Ihre Freunde und Kollegen. Schritt 7: Zusätzliche Ressourcen Es gibt viele Orte, die Sie Ressourcen auf die Programmierung AVR-Chips zu finden. Atmel Webseite kann Ihnen die Datenblätter für Ihre spezielle Chips: www.atmel.com Die Homepage für AVR Libc können Dokumentation zu den avr spezifischen Bibliotheken zu geben: http://www.nongnu.org/avr-libc/ Das GNU-Wiki auf avr-gcc: http://gcc.gnu.org/wiki/avr-gcc Avrfreaks, eine Community rund um den avr-Chips: http://www.avrfreaks.net/ Eine Demo-Projekt von nongnu: http://www.nongnu.org/avr-libc/user-manual/group__demo__project.html
Robotic Spinne V8
13 Schritt:Schritt 1: Zutaten: Schritt 2: Erstellen der Rahmen Schritt 3: Montage des Servos Schritt 4: Montage des Servos auf Servos Schritt 5: Montage der Spidey Legs! Schritt 6: Sehen sie alle zusammen Schritt 7: ein Diagramm zur Referenz Schritt 8: Versuchsaufbau Schritt 9: Ausrichten des Servos Schritt 10: Up und Down Schritt 11: vorwärts und rückwärts Schritt 12: Die Kombination Schritt 13: Fazit
Ich brauchte ein Projekt, das alle meine Servos verwenden würde, so dass ich beschloss, die do-nothing, wertlose Spinne zu machen. Wenn Sie fischertechnik und Servos zu verlieren haben, ist dies das Projekt für Sie! Wirklich, macht diese flopping Spinne für einen großen Lernprojekt. Das Hauptziel des Projektes ist es, die Grundlagen der Servos zu lehren, synchronisiert werden, zu programmieren und zu verstehen, die Reichweite und Stärke der Servos. Die Ergebnisse sind sehr amüsant! Fischertechnik? Was ist das? Legos haben Ziegelsteine, K'NEX hat blaue und gelbe Verbindungsstäbe, aber was hat fischertechnik haben? In Wahrheit hat es viel zu viele Stücke, um Namen zu geben! Fischertechnik ist auf jeden Fall nicht so populär wie Legos oder K'NEX, aber Ich mag es viel besser. Es ist sehr gut für die Ausübung der Bau- und Konstruktionsfähigkeiten. Hier ist ein Auszug aus Wikipedia auf fischertechnik "Fischertechnik ist eine Marke der Konstruktionsspielzeug. Es wurde von Artur Fischer erfunden und wird von fischertechnik GmbH in Waldachtal, Deutschland hergestellt. Fans zu Fischertechnik beziehen sich oft wie FT oder ft. Es ist in der Ausbildung für den Unterricht über einfache Maschinen sowie verwendet Motorisierung und Mechanismen. Das Unternehmen bietet auch Computer-Interface-Technologie, die verwendet werden können, um die Theorie der Automation und Robotik zu lehren. " Ich werde fischer anrufen FT wie oben erwähnt. Hier ist ein Video von ihr zu Fuß. Schritt 1: Zutaten: Werkzeuge: Heißklebepistole Rasierklinge Philips Schraubenzieher, Bohrer mit 7/32 Bohrer Dremel mit sehr kleinen Bohrer (ein wenig kleiner als die Schrauben, die mit dem Servo kommen) Elektronik: 6 AA Batteriepack und Krokodilklemme 8x Micro-Servos und Anhänge 30 + Schaltdrähte oder Stiftleisten. Breadboard Arduino und Leistungsteile: Fischertechnik Schritt 2: Erstellen der Rahmen Da ich nicht weiß, was die FT Stücke rufen, werde ich nur zeigen, die Bilder, um den Bau des Rahmens. Achten Sie darauf, in den Bildunterschriften suchen. Angenommen, Sie fischer haben, können Sie nur sagen, welche Stücke ich benutze, um diese zu bauen. Tut mir leid, ich kann nicht viel mehr und Erklärung! Schritt 3: Montage des Servos Jetzt erhalten Sie Ihre dremel! Die Servos passen bequem zwischen den "Bausteine". Bohren Sie ein kleines Pilotbohrung, dann mit den Schrauben der Servo kam mit, schrauben Sie sie in. Wenn Sie nicht möchten, dass Sie in Stücke Schraube, dass OK, benutzen Sie einfach etwas Heißkleber, aber es ist immer leichter zu demontieren, wenn Sie Schrauben verwenden . Hinweis: Sie werden auf diese Schraube an, bevor Sie an den Armen setzen, oder der Arm in den Weg Ihrer Schraube so dass es schwierig sein soll. Und warum ich das weiß? Ich lasse Sie erraten =) Wiederholen Sie dies auf der anderen Seite. Schritt 4: Montage des Servos auf Servos Alle 7 Artikel anzeigen Sie müssen zuerst auf der Kreisservobefestigungsschraube. Wenn der Stellantrieb von Ihnen weg, schalten Sie es den ganzen Weg nach rechts. Siehe Bilder. Nun ist die kreisförmige Servohebel unterscheidet sich von den anderen Armen; die Schraube klebt oben über dem Kunststoff im Gegensatz zu den anderen, die der Schraubenkopf sinkt unter dem Kunststoff. So, mit diesem Beule in der Mitte, eine flache Oberfläche nicht völlig flach montiert werden, statt sie wackeln und schwenken um das Zentrum. Um dies zu beheben, ich nehme ein 7/32 bit (eine Größe kleiner als 1/4 auf einem Standard-Bohrersatz) und das Bohren eines kleinen Gedankenstrich auf der Servo, die auf der Oberseite der Basis Servo geklebt wird. Siehe Bilder. Dann mit Heißkleber, kleben Sie die beiden Servos zusammen. Video starten. Schritt 5: Montage der Spidey Legs! Dieses Teil ist etwas schwierig. Ich werde ein kleines Video oben zu setzen, um ein bisschen helfen, zu verstehen, wie man die Arme zu montieren. Sehen Sie die Bilder, wie man die Arme zu machen. Sie werden vier davon müssen. Sehen Sie das Video in Schritt 4 für Kleben Sie diese auf. Schritt 6: Sehen sie alle zusammen Nachdem Sie alle Arme montiert werden Sie wollen, um sie für die vollständige Palette von motion.Step 7 überprüfen: Erstellen eines Diagramms als Referenz Nun, das ist das sehr hilfreich Schritt von allen. Erstellen Sie ein Diagramm wie das in der Abbildung gezeigt, und herauszufinden, für jedes Servo, die Art und Weise ist 180 Grad. und das ist 0 deg .. Dann Nummer alle Servos. Diese Zahlen sind, was Sie verwenden werden in Ihrer Arduino Programm. Schritt 8: Versuchsaufbau Ziehen Sie alle 30 Ihrer Jumper! Draht bis alles nach dem Schema. Hier ist, wie es funktioniert. Jeder Servo hat 3 Ausgangsleitungen, Leistung, Masse und Kontrolle. Schließen Sie das VCC und GND von Servo den VCC und GND Schienen Ihrer Steckbrett. Verbinden Sie die 7,5 Volt von Ihren Akku am GND und Vcc Schienen des Steckbrett. (Da die meisten Akkus sind für 6 AA, nehmen Sie eine der Batterien und verwenden Sie einen Jumper, um sie zu umgehen. Dies gibt Ihnen dann 7,5 V statt 9V.) Anschließend folgt das Diagramm, die Sie zuvor gemacht, verbinden Sie die Servo-Steuerleitungen auf die Stifte 2-9 (gelb oder orange, Ich habe sogar gesehen, weiß). Beispielsweise wird Servo 1 verbunden auf Arduino Pin 2. Servo 2 ist eine Verbindung mit Pin 3 und so weiter. Schritt 9: Ausrichten des Servos Nun, hier ist die Zeit, um herauszufinden, den Code. Das erste, was zu tun ist, um ein neues Projekt mit dem Namen Arduino, Aligning Servos zu machen. In diesem Projekt finden Sie alle Servos auszurichten. Also, was Sie tun müssen, ist, herauszufinden, was Grad (1-179), die Sie geben, um die nach oben und unten Servos (die Servos auf der Oberseite mit den Armen verbunden) mit dem Boden machen müssen. Dann nutzen Sie die linken und rechten Servos (die Servos auf der Unterseite) Ebene als auch mit den Stick gerade heraus. Lets untersuchen Sie den Code. Dann sehen Sie das zweite Bild in diesem Beitrag zu sehen, was dieser Code tut für meine Spinne. #include <Servo.h> Servo Servo1; Servo SERVO2; Servo Servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo7; Servo servo8; Leere setup () { servo1.attach (2); // S ist auf Pin 8 servo2.attach (3); servo3.attach (4); servo4.attach (5); servo5.attach (6); servo6.attach (7); servo7.attach (8); servo8.attach (9); } Leere Schleife () { // Alle Motoren Ebene fowards und rückwärts servo1.write (15); servo2.write (100); servo3.write (179); servo4.write (95); servo5.write (160); servo6.write (140); servo7.write (15); servo8.write (85); } Schritt 10: Up und Down Sie müssen nun für die Herstellung die Beine tatsächlich heben Sie die Spinne aus dem Boden herausfinden, die Werte. Machen Sie ein neues Projekt namens oben und unten. Dieses Projekt machen die Beine der Spinne auf und ab bewegen. Beachten Sie die Gegensätze zunächst anheben. Video starten. Und hier ist der Code, den ich verwendet. Ihnen können ähnlich sein. #include <Servo.h> Servo Servo1; Servo SERVO2; Servo Servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo7; Servo servo8; Leere setup () { servo1.attach (2); // S ist auf Pin 8 servo2.attach (3); servo3.attach (4); servo4.attach (5); servo5.attach (6); servo6.attach (7); servo7.attach (8); servo8.attach (9); } Leere Schleife () { servo2.write (100); // Diese Zahlen, um die Spin-Servos gesetzt zu halten. servo4.write (95); servo6.write (140); servo8.write (85); servo1.write (50); // M1 Up servo7.write (50); // M1 Up Verzögerung (500); servo1.write (25); // M1 unten servo7.write (35); // M7 unten Verzögerung (1000); servo3.write (135); // M3 Up servo5.write (120); // M5 Up Verzögerung (500); servo3.write (150); // M3 nach unten servo5.write (140); // M5 unten Verzögerung (1000); } Schritt 11: vorwärts und rückwärts Jetzt werden wir brauchen, um die pan Servos vorne ziehen und nach hinten schieben. Hier ist der Code, den ich verwendet. Ihnen können ähnlich sein. Wenn Sie fertig sind es sollte so aussehen. . . #include <Servo.h> Servo Servo1; Servo SERVO2; Servo Servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo7; Servo servo8; Leere setup () { servo1.attach (2); servo2.attach (3); servo3.attach (4); servo4.attach (5); servo5.attach (6); servo6.attach (7); servo7.attach (8); servo8.attach (9); } Leere Schleife () { servo2.write (80); // M2 foward servo8.write (120); // M8 foward Verzögerung (500); servo2.write (120); // M2 rückwärts servo8.write (90); // M8 rückwärts Verzögerung (1000); servo4.write (120); // M4 fowards servo6.write (110); // M6 fowards Verzögerung (500); servo4.write (80); // M4 rückwärts servo6.write (140); // M6 hinten Verzögerung (1000); } Schritt 12: Die Kombination Jetzt müssen Sie Kämmen der vorwärts und rückwärts mit der nach oben und unten, um es zu gehen. #include <Servo.h> Servo Servo1; Servo SERVO2; Servo Servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo7; Servo servo8; Leere setup () { servo1.attach (2); // S ist auf Pin 8 servo2.attach (3); servo3.attach (4); servo4.attach (5); servo5.attach (6); servo6.attach (7); servo7.attach (8); servo8.attach (9); } Leere Schleife () { servo1.write (50); // M1 Up servo7.write (50); // M1 Up Verzögerung (500); servo2.write (80); // M2 foward servo8.write (120); // M8 foward Verzögerung (500); servo1.write (25); // M1 unten servo7.write (30); // M7 unten Verzögerung (500); servo2.write (120); // M2 rückwärts servo8.write (90); // M8 rückwärts servo3.write (140); // M3 Up servo5.write (120); // M5 Up Verzögerung (500); servo4.write (120); // M4 fowards servo6.write (110); // M6 fowards Verzögerung (500); servo3.write (160); // M3 nach unten servo5.write (145); // M5 unten Verzögerung (500); servo4.write (80); // M4 rückwärts servo6.write (140); // M6 hinten } Schritt 13: Fazit Leider wollte ich diese den Roboter Spinne nennen, aber ich konnte nicht wirklich, weil es nicht in irgendeiner Weise reagieren mit seiner Umwelt. Ich denke, man könnte einige Sensoren oder so etwas hinzuzufügen, aber dieses Projekt ist wirklich nicht zu, dass mean't. Ich hoffe, dass Sie meinen instructable genossen und wenn Sie irgendwelche Fragen oder Anmerkungen haben bitte im Kommentarfeld unten schreiben und ich werde versuchen, sie so gut wie möglich zu beantworten!
Öffnen cv + Arduino + viele Stunden == AWSOME !!!!
Video open cv + Arduino + viele Stunden == AWSOME !!!! das ist ziemlich dang süß. es geht um die coolste Sache ive mit meinem Arduino in eine lange Zeit getan. im Grunde habe ich die Gesichtsverfolgung Demo, die mit opencv kommt und modded es, bis es lief ein wenig schneller dann machte ich es so wäre es Infos über die Lage der Personen senden Gesicht über die serielle Schnittstelle. UPDATE: 2010.09.08 schließlich die instructable hat zum Tragen kamen! hier kann die Führung und den Code zu finden: http://www.instructables.com/id/how-to-build-MACKRA-a-serb-variant/
Ein Learning Chatterbot in C ++
6 Schritt:Schritt 1: Learner.h Schritt 2: Learner.cpp Schritt 3: Voice.h Schritt 4: voice.cpp Schritt 5: Main.cpp Schritt 6: Zusammenstellung und die Einrichtung zum ersten Mal ausgeführt wird
Im Folgenden wird eine Anleitung, wie man einen Spaß und einfaches Chat-Roboter wie Anwendung in C ++ zu schreiben. Der Benutzer gibt einen Satz, und dann der Lernende anspricht, wenn der anfängliche Satz im Speicher vorhanden ist. Wenn es nicht im Arbeitsspeicher vorhanden ist, dann kann der Benutzer die Lern was zu sagen unterrichten. Die Open-Source-Sprachsynthesizer espeak wird verwendet, um akustische Ausgabe zu erstellen. Sie können es hier herunterladen: http://sourceforge.net/projects/espeak/ Der Code funktioniert übernehmen Sie in das gleiche Verzeichnis wie die Chat-Roboter-Anwendung haben, aber wenn es nicht, müssen Sie nur werden keine hörbaren Nachricht zusammen mit der Textausgabe zu hören. Wenn Sie keine Lust Eingabe den Code haben wir es angebracht ..... aber würden wir nicht empfehlen, dass: P Wir gehen davon aus, dass Sie ein grundlegendes Verständnis von C ++, und Erstellung von Multifile-Projekte haben. Schritt 1: Learner.h Lassen Sie uns zuerst unsere Lernenden Klasse zu erstellen. Eine Lernende, um Sätze zu reagieren, wenn es, wie man weiß, und lernen, wie, wenn es nicht tut. Öffnen Sie Ihren Lieblingseditor / IDE, erstellen Sie eine Header-Datei namens learner.h und geben Sie den Code in das Bild. Nochmals, ich nehme an, Sie wissen, was das alles bedeutet, aber ich werde die algorthmic Details in der nächsten step.Step 2 erklären: Learner.cpp Erstellen Sie eine weitere Datei namens learner.cpp und kopieren Sie den Code in das Bild. Werfen wir einen Blick auf die Funktion reagieren. Der Algorithmus ist im Grunde einfach, aber die Datei-Operationen kann verwirrend sein. In Zeile 15 erzeugen wir ein Datei-Stream-Objekt und weisen Sie dann die Speicherdatei in Zeile 16. Hinweis für die ios :: in Argument. Das bedeutet, dass wir wollen, um die Datei für die Eingabe zu öffnen, dh, um die Datei zu lesen. In Zeile 19 beginnen wir eine while-Schleife, die fortgesetzt werden, bis das Ende der Datei erreicht ist wird. Zeile 21, getline, liest eine Mehrwortleitung, wo sich der Cursor derzeit saßen wird, und dann in die nächste Zeile zu bewegen für den künftigen Betrieb. Der Ausdruck wird in der Kennung Variable gespeichert. In Zeile 23 sehen wir, ob der aktuelle Satz Satz des Benutzers entspricht. Ist dies der Fall verwenden wir getline wieder auf der Leitung 25, um die Antwort unter dem passenden Ausdruck zu bekommen. Die Antwort wird dann die Verwendung des Lernenden Sprach Objekt und dann die Funktion auf der Leitung 27 verlassen wir. Wenn wir erreichen das Ende der Datei, und wir haben keine Antwort gefunden wird, dann gehen wir in Zeile 31, wo wir die Datei zu schließen. 32 öffnen wir wieder die Datei, aber dieses Mal für die Ausgabe, dh Programm in eine Datei. Wir haben auch die ios :: app Argument hinzufügen, um sicherzustellen, dass wir angehängt an das Ende der Datei. 33 schreiben wir den ursprünglichen Begriff, und wiederholen Sie den Satz auf 35, um den Benutzer nach einer idealen Antwort aufgefordert. Die Antwort des Benutzers wird dann geschrieben, und die Datei geschlossen wird. Das sagen Funktion auf Leitung 46 einfach übergibt den Begriff der Sprachobjekte sagen Funktion für textlichen und hörbaren output.Step 3: Voice.h Erstellen Sie eine weitere Datei namens voice.h, und kopieren Sie den Code in das Bild. Möglicherweise stellten die Notwendigkeit für diese Klasse, aber wir haben diese für die Portabilität und Wiederverwendbarkeit. Die Klasse ist eigentlich ganz gut für andere Projekte in dem Sie akustische Ausgabe möchten. Diese Header-Datei erfordert nicht viel Beschreibung. Dies wird in der nächsten step.Step 4 kommen: voice.cpp Erstellen Sie eine weitere Datei namens voice.cpp, und kopieren Sie den Code in das Bild. Wie erwartet ist es ganz einfach. Wir sind im Grunde nur die Ausführung der Anwendung espeak von aktuellen, vorbei an den Begriff als Argument, daher der Aufruf der Systemfunktion .... Die einfachste Art der Durchführung cmd Befehle. Am 13. Wir verwenden String Summierung zu unserem Begriff der Befehl hinzufügen. Am 14. konvertieren wir von String in const char *, so dass wir es an die Systemfunktion übergeben. Am 15. wir Ausgang der Text. Am 16. rufen wir System, und führen espeak mit dem Satz als das Argument zu sagen. Stellen Sie sicher, dass Sie in der unmittelbaren Verzeichnis der kompilierten program.Step 5 setzen espeak.exe: Main.cpp Erstellen Sie eine weitere Datei mit dem Namen main.cpp, und kopieren Sie den Code in das Bild. Hier sind die wichtigsten Funktions wohnt, daher, wo wir das Programm starten. In Zeile 7 erstellen wir ein Lernobjekt und nennen es AI. Am 13. beginnt der Hauptprogrammschleife. Es ist unendlich, daher der einzige Weg, um die Ausführung zu stoppen ist, wenn Sie die Anwendung schließen. Der Code 13 bis 19 wird wiederholt. Zeilen 14 bis 16 fordert den Benutzer zur Eingabe. Zeilen 18 bis 19 stellen die Lernleistung. Wir nennen respond Funktion KI und eine Antwort, oder ihn lehren, was zu say.Step 6: Zusammenstellung und die Einrichtung zum ersten Mal ausgeführt wird Jetzt sind wir alle mit dem Code. Gehen Sie voran und zu kompilieren. Achten Sie darauf, eine Speicherverzeichnis in das Verzeichnis, in dem die exe ist hinzuzufügen. Der Speicher-Datei in diesen Ordner bei der ersten Ausführung erstellt werden. Sie können tatsächlich bearbeiten Sie die Speicherdatei direkt, wenn Sie zu korrigieren oder hinzuzufügen, nichts zu wünschen! Auch sicherstellen, dass Sie in auch hier haben die espeak exe. Jetzt sollte alles bis zum ersten Ausführung festgelegt werden: D
Wie Sie das perfekte Roboter zu bauen
5 Schritt:Schritt 1: Mechanik Schritt 2: Physik Schritt 3: Electronics Schritt 4: Programing Schritt 5: Kreativität
dies ist nur Tipps und Ratschläge dies gerade bedeckt machte ich nicht wirklich ein, aber ich bin auf der einen, wie es i wird in Kürze erfolgen auf 2014 arbeiten. Um die perfekte Roboter müssen Sie lernen, bauen Dinge gibt Ihnen die Fähigkeit, sie zu schaffen, so das erste, was ist Schritt 1: Mechanik 1.Mechanics: Mechaniker sind wirklich wichtige Sache, die Sie benötigen, um Ihre Roboter zu vervollständigen, da die meisten Roboter hängen davon auf seine Arbeitsfunktion wie beispielsweise auf beweglichen Roboterarm, Greifer, Kopf, Beine auf Motor und Getriebe und Motor und Getriebe ab hängen von der Mechanik und der Grund, warum Sie lernen müssen; Zahnräder sind nicht nur Dinge, die Sie verwenden, gibt es viele Elemente, die Sie verwenden, aber Zahnräder sind die am meisten, was auf Mechanik, so dass Sie müssen wissen, dass es Bewegung und Länge durch jeden Gang hat seine eigene Funktion und Getriebe ist deffer als miteinander in: Geschwindigkeit , Radius, Gewicht, Anzahl der Zähne, Position und es ist Form und jeder seine eigene Gesicht Dicke, die von der Geschwindigkeit der Drehung und Kraft gemacht am Getriebe wie Wurm, supr, Kegel zu steuern, und es gibt viele Arten, und mehr und hier beispiels : Schritt 2: Physik 2.Physics: Was ist Physik ist die Wissenschaft, die mit dem Studium aller physikalischen und universelle Phänomene und verstehen, wie diese Dinge funktionieren all seinen Phasen und alle Bedingungen, wenn Sie fragen mich, wie würde der Physik helfen Sie mir besorgt? Ich antworte Ihnen Mechanik sind, hängt von der Physik in der Tat überhaupt, was abhängig von der Physik jede mögliche Weise, so dass Sie müssen lernen, das Los in der grundlegenden physikalischen Größen wie: Geschwindigkeit, Kraft, Energie, Zeit, Kraft, Arbeit und viel davon mit seinen Symbolen und Einheit es hilft wirklich, zum Beispiel wenn Sie, um Roboter tragen irgendeine Sache, die Sie müssen wissen, dass es wiegen und wie viel Kraft benötigt wird, um es zu tragen, und wie viel Arbeit zu erledigen, die Energie kosten wird und wissen, wie viel Zeit braucht es, um es zu tragen, und ich bald wird Ihnen eine Karte möchten Elektronik: für sie, und ich werde it.Step 3 veröffentlichen 3.Electronics: Wenn Sie Roboter müssen Sie zuerst lernen, es zu machen, da es geben Ihnen die Möglichkeit, durch den Umgang mit Chips, Boards, reseto und viel jeder hat es elektronische Teil steuern möchten; s eigene Spannung und elektrische Ladung und Widerstand und die einfachste Board und berühmte Brett können Sie damit umzugehen ist Arduino Board gibt Ihnen die Kontrolle über Roboter und es ist leicht, durch USB-Kabel programmiert werden und sicherstellen, dass Sie professionell auf Elektronik müssen Sie wissen, die meisten wissen, sind drei Dinge: Stromstärke (I): von Ampere gemessen wird, gilt: I = Q / T (T ist die Zeit, ist Q Ladungsmenge) Potentialdifferenz (V): von Volt, gemessen Regel: V = W / Q (W ist die Arbeit) elektrische Widerstand (R): von Ohms gemessen, gilt: R = V / I und ich werde darüber reden später, denn dies ist lang, zu müssen Sie die berühmtesten Gesetze wie das Ohmsche Gesetz und Elektronik zu lernen, ist die einzige Möglichkeit, den Roboter zu programmieren, um mehr über Power-Typ erfahren Gleich- oder Wechselstrom, wie haben Sie Beispiel es ist Quelle: Direkt: elektronische Zelle (Trockenbatterie oder Akku) Alternative: Dynamo Wie Sie mit Trockenbatterie oder Batterie müssen Sie die Verbindung der Zellen nicht jede Anordnung, so gibt es zwei berühmte Verbindungs parallelen und seriellen wissen: so Reihenschaltung Ihnen mehr Spannung, aber auch Parallelschaltung machen das Batterie Live longer.Step 4: Programmierung 4.Programing: mit Chips und Board nichts zu tun, bis Sie es programmieren einzige Weg, um Bord so zu verwenden, um jede Sache auf Roboter zu bewegen, müssen Sie es so programmieren, dass zu tun, was Sie wollen, so müssen Sie die Programmiersprache eine Sprache zu lernen, sind leicht und andere nicht und auch einige Bord kommen mit Programmierung Programm wie ArduinoStep 5: Kreativität 5.Creativity: Das ist das Wichtigste, was Sie lernen müssen, oder Sie können sagen, dass es nicht Sache der Lage zu lernen es erworben wird so mit Ihren Fähigkeiten und Kreativität und Phantasie ist besser als 50 Jahren gibt es das Lernen einfacher Roboter sind besser als hohe Kosten und zu komplex aufgrund machte aus Kreativität, so dass ich hoffe, dass Ihnen diese Instructable und ich werde Post mehr über i genommen haben darüber noch nicht geschehen ist, weil es Brei Zeit so vielen Dank für das Lesen dieses und ich hoffe, dass Sie mir folgen, wie Sie mehr Informationen
Fofoque-me: Vox Populi - eine motorisierte Öffentlichkeit System
8 Schritt:Schritt 1: Inspiration Schritt 2: Tilt Schritt 3: Pan Schritt 4: Montage Schritt 5: Motor Driver Schritt 6: Fräsen und Tiefziehen Schritt 7: Server Schritt 8: Installierte
Basierend auf einem früheren Arbeit, die wir mit Megaphonen im öffentlichen Raum durchgeführt, wurden ich und meine Mitarbeiter, Radamés Ajna, eingeladen, in einer Ausstellung mit dem Titel teilnehmen Multitude , von Lucas Bambozzi und Andrea Caruso Saturnino kuratiert. Die Ausstellung wurde auf die Schriften von Antonio Negri und Michael Hardt und ihr Konzept der Vielzahl der Basis, und konzentrierte sich auf Werke, die Formen des Widerstands zu etablierten Macht und vorher festgelegten Kanäle Legitimationsanzugehen, während Denken von der Masse als eine Reihe von Singularitäten und einzigartige Identitäten, die sich gegenseitig in einem Prozess, der Macht, sondern auch Dissens kombiniert beeinflussen. Wir haben vorgeschlagen, eine Reihe von Roboterskulpturen die es ermöglicht, die Besucher in der Ausstellung, indem sie ihre Meinungen mit einem System, das anonyme SMS-Textnachrichten in voice.Step 1 drehen würde teilnehmen zu bauen: Inspiration Das Projekt wird auch von den öffentlichen Demonstrationen und Proteste, die in Brasilien im Jahr 2013 passiert ist, und den Versuch der Regierung, um die Nutzung von öffentlichen Räumen regulieren inspiriert. Genauer gesagt, es spielt mit den Mehrdeutigkeiten, die bei dem Versuch, das soziale Verhalten in dicht besiedelten städtischen Gebieten, in denen alltägliche Aktivitäten sind bereits gewalttätig und chaotisch definieren entstehen. Um einige dieser Zweideutigkeit und Gewalt zu vermitteln haben wir beschlossen, unsere Megaphone aus wie Waffen, die ausgerichtet und verwendet werden, um "Angriff" bestimmte Teile der Ausstellung space.Step 2 werden konnte: Tilt Alle 7 Artikel anzeigen Alles beginnt mit einer Skizze. . . Wir notierte ein paar Ideen für einfache Schwenk- und Neige-Systeme für unsere Megaphone, und beschlossen, eine einfache Konstruktion auf Basis von zwei Motoren und einem kastenartigen Tragstruktur aufzubauen. Kippen schien recht einfach, wir mussten einfach auf den Körper des Megaphon einen Weg zur Kopplung eines Motors. Verwendung eines Systems von Getriebe und Riemen Wir haben überlegt, aber in oder um das Design einfach zu halten und die Anzahl der beweglichen Teile, die brechen könnte zu minimieren, haben wir beschlossen, den Motor direkt heften sich an die Megaphone mit einige benutzerdefinierte 3D-gedruckte Teile. Diese wurden unter Verwendung Fusion360 entworfen und hergestellt, um perfekt mit dem Radius des Megaphon und die Zahnradzähne des Motors. Auf der Seite gegenüber dem Motor befestigt wir eine kurze Achse, die an einem Lager an der Seitenplatte befestigt ist. Wir entschieden uns, Dibond Aluminiumverbundplatten für die Neigungsunterstützungsstruktur verwenden, da es leicht, billig, stark genug, und leicht zu schneiden mit einem Omax waterjet.Step 3: Pan Alle 12 Artikel anzeigen Panning war ein wenig härter. Wir konnten nicht auf der Motorkupplung setzen, um das Gewicht des gesamten Neigungsstruktur unterstützt, so dass wir, um mit irgendeiner Art von Mechanismus zu halten, bis das Megaphon unabhängig von der Schwenkmotor. Eine erste Idee beteiligt mit ein paar halbkreisförmige Nuten, Schrauben und Kugellagern auf einer Festplatte zu halten, bis die Bodenstruktur und ermöglicht es, sich zu drehen. Wir nutzten die omax Wasserstrahl, einige Metallplatten geschnitten, um das auszuprobieren. Wir haben nicht mit Dibond, weil das Gewicht des Neigungsstruktur und Megaphon war genug, um zu biegen und falten den Dibond. Das funktionierte ok. Es geschwenkt, aber nur, wenn die feststehende Platte wurde genau parallel zum Boden. Jede Art von Variation dieses Winkels verursacht die Schrauben an den Enden der Nuten hängen bleiben. Offensichtlich muss dies in einem robusteren Weise erfolgen. Dies ist, wenn Paolo schlug vor, in Plattenspielern zu suchen. Lazy-Susan für den Gewinn! Dies bedeutete eine leichte Neugestaltung der pan-Strukturen und mehr Wasserstrahlen, aber das ist, was Rapid Prototyping geht! Wir hatten eigentlich zu entwerfen, eine Art umgekehrter Lazy-Susan-System seit Drehscheiben funktionieren am besten, wenn es Gewicht drängen ihre Platten zusammen und gegen ihren Lagern. Dadurch erhöhte sich die Gesamthöhe des gesamten Tragstruktur, aber machte es viel mehr robust und widerstandsfähig gegen unplanar conditions.Step 4: Baugruppen Alle 16 Artikel anzeigen Nachdem alle Stücke geschnitten und gedruckt, der Montage des Mechanismus war nicht schwer. Die meisten der Platten hatte eine Art der Komponente zu ihnen angebracht, wie Schalter oder Lager, so dass diejenigen, erhalten sie vor der Montage der Struktur befestigt ist. Dann werden 3 Seiten des Neigungsfeld zusammen, so dass das Megaphon aus, so dass wir in der Box zu erreichen, um die obere Platte in die Pfanne Mechanismus zu befestigen. Sobald dies alles zusammen, das Megaphon und die letzte Platte eingeschraubt zu werden. Wir haben alle Design-Dateien in gemeinsam genutzten unsere Fusion 360 Community-Seite . Schritt 5: Motor Driver Wir verwendeten 12V Autofensterantriebe, da sie recht kräftig, leicht zu finden, und in der Regel in Überschuss speichert billig. Wir haben diese für die U 9 € und 15 € U gekauft, und zur Zeit sind sie 20 € bei surpluscenterdepot.com. Einige der Demontage ist erforderlich, um die Motoren aus dem Auto-Fenster Linearbewegungsmechanismus zu erhalten benötigt, aber es ist nicht so schwer. Diese 12V-Motoren können bis zu 5A zu ziehen, wenn ins Stocken geraten, aber die Megaphone sie nur um 1,5 A zu ziehen, um 2A bewegen. Und auch wenn sie nach unten ausgerichtet ist, sind sie immer noch mit der vollen 12V super schnell, so dass wir beschlossen, einige PWM'ing, um ihre Geschwindigkeit ein wenig unter Kontrolle bringen. So, 12V, 2A bis 5A, PWM, und bidirektionale Steuer. . . führte uns zu diesem kleinen H-Brücken-Treiberschaltung: TLE-5206. Wir könnten Schneiden es ein wenig zu nahe mit dem Dauerstrom max spec, aber für diese Anwendung, wir nur mit einem 5A Stromversorgung für beide Motoren, so dass es wahrscheinlich in Ordnung. . . Hier ist unsere Schaltung zur Ansteuerung zwei davon, mit Endschalter. Die Platte wurde für eine Arduino Mega ADK gemacht, weil, wenn wir zuerst diese entworfen, waren wir der Hoffnung, die ADK verwenden, aber es kann für jede andere Art von Arduino mit 4 PWM Stifte und 4 digitale Eingangsanschlüsse hergestellt werden. Der Code für die Arduino ist im Grunde eine kleine Zustandsmaschine, die für Bewegungsbefehle von einem Android-Handy wartet, und aktiviert dann die Motoren, während die Aufmerksamkeit auf die Endschalter. Fräsen und Vakuumformen: hier ist der Mechanismus bei voller 12V speed.Step 6 getestet Alle 7 Artikel anzeigen So ist der Mechanismus war solide, aber wir waren immer noch die äußere Hülle, die das Ganze eher wie eine Waffe macht fehlt. Wir haben uns entschieden, es aus vakuumgeformten Polystyrol zu machen, weil es schien, einfach, leicht und billig. Wir modelliert die Schale in Fusion 360 und verwendet seine CAM Add-ons (CAM 360), um Werkzeugbahnen zum Fräsen einer Form zu erzeugen. Wir haben zunächst versucht, einen Master aus Styropor zu machen, aber es hielt Schmelzen oder Verformen während des Vakuumformverfahren, so dass wir schließlich Fräsen eines MDF-Master statt. Wir verwendeten eine hausgemachte Vakuumform-Setup ähnlich dem zu sehen hier . Vakuumformen war ziemlich einfach und macht Spaß. Lösen des Master von der Kunststoff war etwas schwieriger (wahrscheinlich wegen der Größe und Höhe unserer Objekt). Glücklicherweise Schneiden der Kunststoff mit einem Dremel in einigen strategisch wichtigen Orten geholfen loslassen mold.Step 7: Server Zusätzlich zu der Möglichkeit, SMS-Textnachrichten von Teilnehmern zu erhalten, auch setzen wir gemeinsam einen Mechanismus, der die Besucher ihre eigene Stimme zu verwenden, um Nachrichten für die Megaphone zum Entspannen bleibt erlaubt. Wir entkernt ein Megaphon und benutzt seinen Körper, um eine kleine Raspberry Pi-Server im Inneren zu verstecken. Dieser Server wurde so programmiert, dass Signale aus dem Megaphon Trigger, Sprach Rekord Menschen zu allen anderen Megaphonen in den Raum zu erhalten, und dann verteilen die aufgezeichnete Nachricht. Wir haben eines der Raspberry Pi ist GPIO-Pins, die Megaphon Trigger und einen USB-Soundkarte zu lesen, um das Megaphon eigenen Mikrofonsignal in die Raspberry Pi gelesen. Dieser Server war auch verantwortlich für die Verteilung der SMS-Textnachrichten an alle Megaphonen im ganzen Raum verstreut. Der Python-Code für den Server ist auf GitHub .Schritt 8: Installierte Alle 7 Artikel anzeigen Ein Megaphon Wandtafel und drei Roboter-Strukturen wurden auf der Messe in São Paulo installiert. Dies ist, wie sie aussahen installierte.
Swarmscapers: Autonome Mobile 3D Printing Robots
12 Schritt:Schritt 1: Übersicht über die nachfolgenden Schritte Schritt 2: Robot: Materialien und Pläne für die Montage Schritt 3: Roboter-Montage Schritt 4: Verdrahtung der Robot Schritt 5: Erforderliche Software und die zugehörigen Dateien Schritt 6: Erstellen Sie die Programmierarbeit Schritt 7: Erstellen XBEE Arbeit und reacTIVision Nuancen Schritt 8: Drucken Bed Box: Notwendige Waren, Materialien und zugehörige Dateien Schritt 9: Der Bau der Print-Bett Schritt 10: Materialforschung und Möglichkeiten Schritt 11: Drucken mit einem Swarmscaper! Schritt 12: Projekt-Potential unter den Möglichkeiten der Förderung
Alle 11 Artikel anzeigen Swarmscapers ist ein 2-monatigen Forschungsprojekt durchgeführt, in der kreativen Architektur Machines Studio, indem gelehrt Jason Kelly Johnson und Michael Shiloh am California College of the Arts in der Digital-Craft Lab . Es ist eine Zusammenarbeit zwischen Clayton Muhleman, Alan Kation und Adithi Satish. Ein riesiger Schwung hinter dem CAM Studio als Ganzes in Frage zu stellen, was passiert, wenn Architekten geworden Innovatoren ihrer eigenen technologischen Hilfsmittel und nicht als bloße Nutzer von vorverpackten CAD Suiten und Fertigungsmaschinen von Ingenieuren entworfen. Niemand in unserem Team hat einen Hintergrund im Maschinenbau oder Elektronik, und das ist nicht zu versuchen, Architekten Ingenieure werden und Optimierung bestehender Technologien. Vielmehr sind die Studio-Fragen, welche Art von kreativen Potential architektonischen Designer erfinden ihre eigenen Maschinen zu entriegeln, und spekuliert, was breitere soziokulturellen Ideen entstehen aus Architektur, die von diesen Maschinen hergestellt wird. Swarmscapers erforscht das Potenzial eines autonomen Schwarm-Roboter in der Lage, unabhängig voneinander arbeit in feindlichen Umgebungen. Verwendung Vor-Ort-Materialien, um bewohnbare Strukturen zu schaffen, materialisiert sich das Verhalten des Roboterschwarm der durch einen langsamen und ständigen Prozess der Schichten 3D-Druck. Diese Projekte das architektonische Potenzial der Schwellen Roboter- und Fertigungstechnologien durch eine Bottom-up-regelbasierten Systems. Jede Einheit innerhalb des Roboterschwarm agiert als Einzelmittel mit einem bestimmten Regelsatz, die sein Verhalten steuert und erlaubt es, mit anderen Agenten im System zu koordinieren eingebettet. Diese Agenten 3d groß, architektonischen Strukturen, die verkalken und gestärkt aus der Landschaft, in der die Impulse für Struktur ist es, zukünftige Lagern in extremen Umgebungen, Orten, wo Menschen nicht anders bauen könnte entwickeln zu drucken. Extreme Hitze und die Fülle von Rohstoffen in der Wüste machen es zum idealen Testbett für die Roboterschwarm zu bedienen, die Schaffung emergent Samen für zukünftige Gebäude Wohnungen, die bereit für die Raumbelegung von Menschen im Laufe von mehreren Jahrzehnten sind. Um dieser breiteren Vision zu testen, haben wir ein Labor-ähnliche Einstellung zur Verwendung von mindestens einem mobilen Roboter 3d Druck skaliert Objekte innerhalb eines 48 "x 48" x 20 "build Volumen konzentriert. Es gab 2 großen Konstanten in unserer größeren Konzept dass es uns ermöglicht, unsere Forschung konzentrieren und unser Ziel in einer 2 Monate Zeitrahmen, die einen Portal weniger mobil zu erstellen waren erzielen Pulverbett und Tintenstrahlkopf 3D-Drucker (die spezifische Technologie von Z Corp 3D-Drucker) und zu nutzen, auf -Site körnige Materialien wie Baustoffe. Es war wichtig für unsere Maschine Gantry-less und mobil bleiben, weil es bedeutet, dass mehrere Maschinen eines Tages in der Lage, selbständig 3D-Druck ganze Gebäude, und es bedeutet, dass diese Drucker im Vergleich zu relativ klein die Gebäude sind 3D-Druck. Die Vorteile der Verwendung von Pulverbett und Tintenstrahlkopf 3D-Druck als eine Technologie ist, dass es uns erlaubt, ohne Gerüst zu drucken und erstellen Sie sehr komplizierte Formen, und es erlaubt uns, die übrig gebliebenen Materialien wiederverwenden, so dass es eine minimale Menge von Abfällen während der Bauphase. Zusätzlich kann unser Verfahren mit nahezu jedem körnigen Materials einschließlich Sand, Reis, Grieß, Salz und Sägemehl zu arbeiten. Da es wichtig ist, um Materialien vor Ort gefunden zu verwenden, haben wir unsere größeren 3D-Drucke in Sägemehl, weil CCA erzeugt 6 Müllcontainer voller Sägespäne pro Woche. Sawdust ist reichlich vorhanden und es ist extrem leicht, so dass es ein ideales Material für uns zu testen. Der Roboter arbeitet, indem auf der Oberseite der Sägespäne basierend auf einer Werkzeugbahn in dem Computer definiert und Fallenlassen eines Bindemittels auf das Material, Härten es fest. Es tut dies immer wieder, Schicht für Schicht, bis das Objekt complete.Step 1: Übersicht über die nachfolgenden Schritte Es kann wie ein komplexer Prozess, um den 3D-Druck mit einem Swarmscaper beginnen scheint, so dass wir brechen diese nach unten in die Grundschritte mit Unterschritten dazwischen: 1) ROBOT HARDWARE - alle Stücke benötigte zu montieren und verdrahten Ihre Swarmscaper 1.1) erforderlichen Lieferungen, Materialien und die zugehörigen Dateien (Schritt 2) 1.2) Robot Montage (Schritt 3) 1.3) Verdrahtung des Robot (Schritt 4) 2) ROBOT SOFTWARE - alle notwendigen Software und Programmierung für die Swarmscaper 2.1) Erforderliche Software und die zugehörigen Dateien (Schritt 5) 2.2) der an den Programmierarbeiten (Schritt 6) 2.3) Herstellung XBEE Arbeit und andere Software Nuancen (Schritt 7) 3) PRINT-BED - alle Teile erforderlich, um den Druck-Bett für den Roboter innerhalb betreiben montieren 3.1) erforderlichen Lieferungen, Materialien und zugehörige Dateien (Schritt 8) 3.2) Der Bau der Print-Bett (Schritt 9) 3.3) Material Studies for Possible Baumaterialien (Schritt 10) 4) 3D-Druck mit einem SWARMSCAPER! (Schritt 11) 5) potentiellen Möglichkeiten und nächste Schritte (Schritt 12) Die Art und Weise organisieren wir diese Schritte, ist es wichtig, durch alle Schritte vor dem Sammeln der Lieferungen, um loszulegen suchen. Da gibt es eine Menge von Waren, Software und Dateien, die mit Herstellung dieser Projektarbeit verbunden sind, getrennt wir diese längere Liste in mehrere Schritte. Der Einfachheit halber Schau STEP 2 STEP 5 und STEP 8 für alle notwendigen Verbrauchsmaterialien, Software und Dateien benötigt, um Ihre eigenen Swarmscaper bauen. Es ist auch wichtig zu beachten, dass dieses Projekt mit Zugang zu einem 3D-Drucker, ein Laserschneider, und Standard-Holz-shop Werkzeuge (Bohrmaschinen, Sägen, etc.) abgeschlossen. Wir verwendeten eine Flashforge Creator und ein Ultimaker 2 für die 3D-Drucker und ein LaserCam Laser-Cutter mit 2 'x 4' Bettgröße. Es ist möglich, nicht brauchen, um den Laserschneider verwenden, aber die 3D-Drucker und Shop-Tools sind absolut notwendig. Schritt 2: Robot: Materialien und Pläne für die Montage 3D-Druck-Komponenten Um die Teile für die Drohne zu montieren, zuerst werden Sie Zugang zu einem 3D-Drucker brauchen, um die wichtigsten Teile des Körpers zu drucken, um die Zähne der Laufflächen fahren, sowie Drucken der Laufflächen selbst. Die beigefügte ZIP hat alles, was erforderlich ist, um für die Drohne drucken Sie die Teile. Die Zip enthält eine Sammlung von .stl Dateien, die Sie zu Ihrem 3D-Drucker Slicing-Software der Wahl hochladen können. Wir diese Dateien auf einem Creator Flashforge und einer Ultimaker 2, während die Herstellung der Roboter erfolgreich gedruckt, so haben sie Ihnen zu viel Mühe sollte. Alle Dateien wurden entwickelt, um ohne Gerüst oder Flöße zu drucken. Frame Assembly Um das Chassis zu befestigen und zusammen gestalten, müssen Sie einige 8-32 Edelstahl (alle Metallteile aus rostfreiem sein, wird dieser kleine Roboter gehen sehr nass und schmutzig zu machen!) Alle Gewinde, einige 1/8 "dicken Nylon-Unterlegscheiben, Sicherungsmuttern und 1/4 "OD Aluminiumschläuche über sitzen die Spitze des Gewindes und halten Sie die Zähne. Also, stellen Sie sicher, dass Sie einige Kabelbinder um das Reservoir mit dem Hauptrahmen befestigen können. Achten Sie darauf, die axonometrische Zeichnung für Assembly verweisen. Elektronische Komponenten Die Elektronik zur swarmscaper Drohne sind zwei Stapel von Elektronik besteht. Eines ist ein Leistungsmodul, das 7volts zu den Antriebsmotoren und dem Pumpenmotor liefert. Wir verwendeten eine Kombination aus einigen Adafruit LiPo-Ladegeräte , 2000 mAh LiPo-Akkus und einem Gleichspannungswandler Das zweite ist das Steuermodul, das die Motoren steuert und kommuniziert mit dem Computer. Das Steuermodul Schild Stack besteht aus einem Arduino Uno, einem umfasste Adafruit Batterieschild & LiPo-Akku , zwei X-Bienen-Reihe 1 ist , eine X-Bee Schild sowie ein X-Bee-USB-Adapter , so dass Sie es von Ihrem Computer zu steuern, und dann Ihre eigene H-Brücken-Motorsteuerung und MOSFET-Transistors zu steuern, die Schlauchpumpe . Alternativ können Sie sich holen ein Moto Mama H-Brücke / xbee Schild und sparen Sie sich einige Löten. Das wird die Xbee Schild und Ihrem H-Brücke-Controller zu ersetzen und sie mit einem riesigen Kühlkörper, der cool aussieht kommt! Die Motoren wir der Anwendung in der Fingertech Funken 360:. 1 ausgerichtet DC Erhalten Sie all das Zeug zusammen und Sie werden bereit sein, starten Sie Ihre eigenen mobilen, autonomen 3D-Drucker sein Schritt 3: Roboter-Montage Um den Roboter zu montieren, nehmen Sie einen genauen Blick auf die beigefügten axonometrische Explosionszeichnung. Die rost alle Gewinde fungiert als Hauptseitenstruktur, mit den Achsen der Zahnräder bietet Steifigkeit zu den Gleisen. Die Rädchen an der Vorderseite der Strecke ist, um die richtige Menge an Durchhang in der Laufflächenanordnung erhalten einstellbar. Wenn Ihre Laufflächen beginnen Bindung und auf zu viel, gerade dieses Rädchen bewegen rückwärts und Sie sollten reibungslos rollen. Beachten Sie, dass die Gleichstrommotoren müssen, um die Antriebszahnräder unterstützt installiert werden. Um die Antriebszahnräder gerade zu halten, verwenden Sie ein Kantschraube in Position gehalten durch eine Kontermutter von der äußeren Spur innerhalb des Inneren des Zahnrad Ruhe. Dadurch wird die Antriebszahnrad aus Biegung unter Last zu halten und halten Sie Ihre Drohne glücklich. Der einzige Schritt der Vorbereitung auf die 3D-Druckteile erforderlich ist, um sicherzustellen, dass Sie Ihren Behälter zu versiegeln, so kann es Flüssigkeiten, ohne undicht zu halten. Wir druckten alle Teile in PLA, die auch mit einem Polyurethan-Versiegelung zu arbeiten, wie dieser scheint. Nachdem Sie der Hauptrahmen montiert sind, der Hauptrahmen misst über vier Kabelbinder. Das Reservoir dann Clips auf und alles, was Sie tun müssen, ist bringen Sie Ihre Elektronik und Sie bereit zum Drucken sind Schritt 4: Verdrahtung der Robot Um Ihren Roboter verbinden, montieren Sie die Macht und Kontrolle Schild Stapel auf ihre einzelnen Frames und dann sicherstellen, dass Sie die höhere Spannung die Stromversorgung des Pumpenkreislauf und in auf Ihrem H-Brücke Schild die richtige Pin laufen. Es gibt jede Menge umfassender Online-Tutorials, wie Sie eine H-Brücke zum bürstenlosen Motoren da draußen zu fahren. Adafruit ist immer eine gute Quelle für diese Art von Führungen. Denken Sie daran, dass alles, was Schaltung, die Sie verwenden, um Ihre Motoren laufen, müssen Sie in der Lage sein, um die Richtung umzukehren sowie als Regelgeschwindigkeit. Hier ist eine andere Adafruit Anleitung, wie man einen Mosfet behandeln. Jetzt nur sicherstellen, dass Sie mit Macht und Kontrolle sind an die richtigen Komponenten und machen Sie sich bereit zu drucken! Schritt 5: Erforderliche Software und die zugehörigen Dateien Alle der tierische themenorientierte Software, die wir zur Gestaltung und Programmierung des Druckers: Rhinoceros 3D - ein 3D-Modellierungsprogramm, das auch als Rhino bekannt Heuschrecke 3D - eine visuelle Programmiersprache für Rhino. Es ist ein Plug-in haben wir verwendet, um Form und Funktion den Roboter zu erzeugen. Plug-Ins, um das Plug-in (Grasshopper) notwendig für unser Skript ausgeführt werden: Firefly - zum Grasshopper auf dem Arduino für interaktive Programmierung verbinden Python Komponenten - für die Programmierung Befehle zur Eingabe in Firefly Uno Write Komponente Webervogel - Komponente für die Netzaufteilung und Versorgungsunternehmen Starling - für Mesh Booleans Kangaroo - ein Physik-Simulator mit andere nützliche Hilfsprogramme Alle von der nicht-tierische themenorientierte Software: Arduino IDE - benötigt, um Firmata auf die Arduino-Board selbst hochladen Reactivion - für Vision-Tracking-und Lesebezugsmarkierungen. Sie können auch Bezugsmarkierungen von ihrer Website. XCTU - zum Senden von drahtlosen Signalen von einem XBEE zum anderen. Schritt 6: Erstellen Sie die Programmierarbeit Sobald alle Plugins und Software installiert wurden, sollte der Grasshopper-Definition im vorherigen Schritt bereit zu gehen. Das Skript funktioniert durch eine Punkt-zu-Punkt-Methode von Vision-Tracking, wo es eine Kurve in eine Reihe von Punkten teilt gesteuert, und der Roboter von einem Punkt bewegt sich auf die nächste um, Abscheiden Bindemittel, wie es geht. Sobald er den ersten Punkt erreicht, wird die parastaltic Pumpe eingeschaltet ist, und der Roboter beginnt Abscheiden der Bindeflüssigkeit. Eine Kamera nimmt die Bezugsmarken und lokalisiert den Roboter im Raum auf der Grundlage der Anerkennung der Markierung (die in Rhino ist). Die Bezugs ist als eine Ebene in Grasshopper, die nach unten in Vektorkomponenten aufgebrochen wird anerkannt. Diese Vektoren sind, wie die Richtung und Winkel der Maschine werden in der Reihenfolge berechnet der Roboter in der Lage, von Punkt zu Punkt, dem Zeichnen der Form, die gegeben wurde. Das erste, was zu tun ist, mit dem Glühwürmchen firmatta Holen Sie sich das Arduino geladen, damit es durch Heuschrecke laufen kann. Sie müssen Arduino IDE zu öffnen, gehen Sie auf "Datei" und den Mauszeiger über "Sketchbook." Klicken Sie auf die Datei, die "Firefly Firmatta sagt. Alles, was Sie dafür tun müssen, ist zu gehen, wo es sagt BAUDRATE und ändern Sie die Zahl von 115200 bis 9600. Dies wird die drahtlose Kommunikation mit dem XBEE ermöglichen. Achten Sie auf die serielle Schnittstelle Sie verwenden, denn es sollte die serielle Schnittstelle in Heuschrecke entsprechen. Sie müssen die serielle Schnittstelle, indem Sie auf "Extras"> "Serial Port" wählen und wählen Sie die serielle Schnittstelle zu bedienen. Stellen Sie sicher, dass Ihre Arduino ist bis zu Ihrem Computer angeschlossen, und drücken Sie den Upload-Button. Dies ist etwas, das man nur einmal tun müssen, ist Ihre Arduino ist etwa bereit zu gehen. Die wichtigsten Bedienelemente des Grasshopper-Skript sind entlang der linken Seite. Die serielle Schnittstelle und die Uno schreiben boolean schaltet muss auf true gesetzt für das Skript zu arbeiten. Um etwas zu wahr oder falsch zu wechseln, doppelklicken Sie darauf. Um den Text, klicken Sie einfach doppelt zu ändern, und um eine Reihe von der Anzahl Schieberegler zu ändern, können Sie entweder einen Doppelklick und geben Sie einen Wert, oder Sie können sie mit der Maus verschieben. Für jede Schicht, haben Sie, um die Schicht Elementwert auf den Schieberegler in die grüne Blase ändern. Die Nähe Toleranz ist einstellbar, es ist, wie nah sich der Roboter zu einem Punkt kommt, bevor es löst den nächsten Punkt. Sobald der Roboter Toleranzwinkel 1 erreicht, verlangsamt es eines seiner Räder auf die niedrige Drehzahl Wert, während das andere Rad bleibt bei hoher Geschwindigkeit. Sobald es Toleranzwinkel 2 erreicht, alle Räder vorwärts mit hoher Geschwindigkeit. Alle diese Werte eingestellt werden, aber die der niedrigen Geschwindigkeit sollte nie unter 60, denn das ist Grenze des Motors. Sie könnten versuchen, und legen Sie es niedriger, um zu sehen, was passiert! Die Geschäftsbereiche der Kurve sollte bei einer höheren Division Zahl für größere Kurven und eine tiefere Spielklasse für kleinere Kurven sein, müssen Sie einstellen, wie Sie gehen. Der Killswitch ist es nur, falls etwas schief geht. Umschalten, dass es wahr, um alle Systeme zu deaktivieren. Einrichten des XBEE und die ReStep 7: Herstellung XBEE Arbeit und reacTIVision Nuancen Die XBEE hat sich auf einem Server durch die XCTU Software eingestellt werden. Sie müssen ein neues Gerät hinzufügen, und geben ihm einen einzigartigen Registrierung, damit sie sich zu verständigen. Eine XBEE muss an einen USB-Mini-B an den Computer angeschlossen werden, während der andere bis zu einem Schild, das in die Arduino auf dem Roboter-Stecker angeschlossen. Dies ermöglicht eine drahtlose Kommunikation zwischen Heuschrecke und der Swarmscaper. Hier sind ein paar gute Links, die wir angeschaut, um diese richtig eingerichtet: http: //www.future-cities-lab.net/blog/2012/11/29/x ... http: //www.digi.com/products/wireless-wired-embedd ... Was reacTIVision, muss die Software geöffnet sein, während alles in Ordnung läuft für Firefly, es zu lesen. Wenn es nicht geöffnet ist, wird das Skript zur Steuerung des Roboters nicht. Es dauert ein wenig basteln, um die physische Umgebung Spiel, was im Computer geschieht machen. Wenn Sie die "i" -Taste in reacTIVision drücken, wird ein Menü für ein Umschalten der beiden Achsen x und y der Kamera zu geben. Wir fanden, dass, wenn wir immer die X-Achse desselben und invertiert die y-Achse, dann die Kamera projiziert Informationen korrekt in Heuschrecken. Dies kann jedoch mit einem anderen unterschiedlichen Webcam. Eine andere Sache, die wir gefunden hilfreich war es, Auto-Fokus-Funktion unserer Webcam deaktivieren, da es die Fähigkeit der Kamera, um die Referenz-Markers lesen gestört. Schritt 8: Drucken Bed Box: Notwendige Waren, Materialien und zugehörige Dateien Dieser Schritt wird eine Reise in die Holzplatz erfordern. Dies ist die Standard-Holz-und Hardware, die Sie benötigen: 8 - 2x4 Stücke geschnitten auf 24 "jeweils, und 12 - 2x4s auf 48 geschnitten" jede 1 Badezimmer mit 48 "x 96" x 3/4 "Sperrholzplatte in zwei Hälften geschnitten, um 2 48" x 48 "Blatt. 1 davon ist die Basis für den Druckbett, und das andere, wird abgehauen und dienen als Druck werden Element für den Druckprozess. 5-24 "x 48" Blatt 1/4 "Acryl - 4 wird wie die Schiebe Seiten des Druckbett verwendet werden, während 1 wird für die Kamerahalterung verwendet werden. 1 Karton mit 100: 3-1 / 2 "Deckschrauben, 1 Kasten von 100: 2" Deckschrauben und 1 box von 100: 3/4 "Deckschrauben 8 - 2-3 / 8 "x 2-3 / 8" x 9/16 "Stahlwinkeln, und 4 - 2-3 / 8" x 2-3 / 8 "x 3" Stahlwinkeln 4 Lenkrollen, die zu verriegeln 4 Halogenarbeitsleuchten - dies trägt zur Verringerung der Trockenzeit um die Hälfte durch Zugabe von Wärme an den Prozess. 1 große Plane Mindestens 1 leistungsstarke Vakuum, wie ein Geschäft vac, in dem das Material wiederverwertet werden können. Optional, wenn versucht, Staub enthalten: 100 ft von 6 mil Polyethylen Dampfsperre, um eine Eindämmung der ganzen Arbeitsraum zu bauen. Vielleicht ist einer der wichtigsten Werkstoffe: Das Bindemittel! Sie benötigen ein LOT von Aleene der Tacky Glue . Für unsere Drucke verwendeten wir ein Verdünnungsverhältnis von 2: 1 - 2 Teile Wasser und 1 Teil klebrigen Leim. Wir empfehlen den Kauf klebrigen Leim durch die Gallone auf amazon. Sie müssen auch eine hochauflösende Webcam. Wir verwendeten ein Standard Logitec mit einem 1080 x 960 resolution.Step 9: Aufbau des Print-Bett Die Konstruktion des Druck Bett ist recht geradlinig. Es wurde etwas überdimensioniert, um für 2000 £ Sand-Konto, wenn wir uns entschlossen, diesen Weg gehen. Beziehen sich auf die oben genannten Zeichnungen mit der entsprechenden Reihenfolge der Anweisungen. 8 der 48 "2x4s sollte bis auf 44-1 / 2 geschnitten werden". Sie überschneiden und zu stapeln, und gehen zusammen wie in der zweiten Zeichnung oben. 3 der 48 "2x4s müssen bis zu 3 gerissen werden" breit (im Gegensatz zu der eigentlichen dim: 3-1 / 2 "). Diese wirken als Balken für die Basis Boden des Druckbett. Das Blatt 48 "x48" x3 / 4 "Sperrholz ist direkt auf der Oberseite von diesen. Für die Spalte-Rahmen, dass die Acryl Folien in, diese müssen Sie die Zentrum in 1 "mit der Tischkreissäge mit einer dado Klinge, ein wenig größer als 1/4 setzen" gekerbt werden, um Toleranzen zu berücksichtigen. Die Bodenelemente sind 2x4s die zur Hälfte auf der Tischsäge zerrissen werden, und sie sind mit der gleichen Spezifikation genau in der Mitte gekerbt. Sobald dies zusammen, Slot die Acrylstücke an Ort und Stelle, und befestigen Sie die Kamera montieren. ** Ein Datenblatt mit weiteren Zeichnungen und weitere Informationen werden in Kürze in diesem Abschnitt hinzugefügt werden ** Schritt 10: Materialforschung und Möglichkeiten Durch verschiedene Studien, haben wir ein Verfahren zum Drucken mit Sägemehl bewährt, und wir sind zuversichtlich, dass jede körnige Material könnte mit weiteren Exploration in unterschiedliche Bindemittel zu arbeiten. In unseren Experimenten haben wir festgestellt, dass Sand funktioniert wirklich gut, aber es dauert viel länger, um zu beheben, als Sägemehl bei der Verwendung von Polyvinylacetat als Bindemittel aufgrund der Beschichtungsverfahren. Aufgrund dieser Einschränkung für Sägemehl entschieden wir uns, weil sie bereit für die Ausgrabung nach 24 Stunden ist. Es gab 2 primäre Experimente, die wir durchgeführt, dass die Trocknungszeit und Schichtung getestet. Im ersten Experiment stellten wir die Hypothese, dass Veränderung der Geschwindigkeit der Abscheidung sowie das Hinzufügen Wärme würde differierende Trockenzeiten für die Materialien. Wärmezufuhr endete Verdoppelung der Trocknungszeit für Material, in dem die Wärmequelle eine Halogenlampe. Unterschiedliche Geschwindigkeiten jedoch schien wenig Einfluss haben über trockene Zeit, trotz höherer Materialsättigung. In der Schichtung Test stellten wir die Hypothese, dass Sand würde länger dauern, bis mit PVA als Sägemehl trocknen, auch wenn es trocknet härter und stärker an der Luft. Unsere Tests bewiesen, dass dies der Fall, das Sägemehl eine viel gangbarer Weg gemacht, um unseren Drucktests fortsetzen. Sawdust trocknet ohne Probleme, wenn sie unter mehreren Schichten mit PVA untergetaucht, während Sand braucht einige Kontakt mit Luft. Es wäre interessant, mehrere dieser Experimente mit verschiedenen Bindemitteln, die mehr geeignet ist, ein Material sein kann, wie Sand durch. Schritt 11: Drucken mit einem Swarmscaper! Es ist wichtig, Vorsichtsmaßnahmen bei der Arbeit mit Feinstaub zu nehmen. Wir empfehlen, mit Schutzbrille und Atemschutzgeräte, so dass Sie die Staubpartikel in der Luft nicht einatmen. Bevor Sie ein beliebiges Material in das Bett, empfehlen wir, indem eine dicke Platte aus Pappe, Schaumstoff-Kern, oder Sperrholz nach unten, dass ist etwas kleiner als die Abmessungen der Druckbett. Dadurch wird die Grundlage für das Modell, das ausgegeben wird, und es macht es so, daß das Modell leicht ohne Beschädigung entfernt werden. Aus Zeitgründen, von Hand gelegt wir das Material in das Bett mit einer Schaufel und ausgeglichen es von Hand. Das erste, was hier zu tun ist, nehmen die Schaufel und Schaufel 2 Schaufeln voller Sägemehl (oder ein anderes körniges Material Sie versuchen) in das Bett. Die Menge der Kugeln pro Schicht erforderlich ist, kann optimiert werden und abwechslungsreich, wir fanden nur, dass 2 Kugeln funktionierte gut für das, was wir taten. Glätten die oberste Schicht Sägemehl von Hand. Der nächste wichtige Schritt ist, um das Sägemehl zu komprimieren. Wir haben einen 24 "x 46" x 3/4 "Stück Sperrholz, legte es in das Bett und stand dann auf sie, um sie zu komprimieren. Dies ermöglicht der Roboter in der Lage, auf dem Sägemehl mit zu fahren wenig Mühe. Diese Dinge müssen für jede einzelne Schicht wiederholt werden. Und mach dir keine Sorgen, wird der Kompressionsschritt nicht schaden den Druck! Es in der Tat hilft den Leim binden an das Sägemehl effizienter. Jetzt müssen Sie die Robotertrichter mit der 2 zu füllen: 1 Leim / Wasser-Lösung, und platzieren Sie es in der Druckbett. Am besten ist es so nah an der ersten Stelle in Heuschrecke / rhino wie möglich zu platzieren. Dies ist vor allem auf einige bekannte Fehler in unserem Skript, das ein paar Dinge schrauben konnte. Versuchen, sie in Einklang mit der Richtung, die der Bot fahren zu bekommen, und nicht den Punkt genau zu berühren. Stellen Sie sicher, dass alle Batterien aufgeladen sind, und schalten Sie den Schalter für den Roboter zu starten. In Heuschrecke, Stellen Sie sicher, alles richtig ausgerichtet ist, und stellen Sie sicher, dass das Protokoll wurde zurückgesetzt und auf false ausgelöst. Dies muss für jede einzelne Schicht zurückgesetzt. Schalten Sie den Uno Write und Port öffnen, indem Sie sie auf True. Diese können auch für den Rest der Druckvorgang umgeschaltet gelassen werden. Stellen Sie sicher, dass die Halogenlampen eingeschaltet sind. Diese fügen Wärme an den Druck, die wir festgestellt, dass doppelte Trockenzeit zu helfen. Zeit zu beobachten, das Swamscaper gehen! Es wird von Punkt zu Punkt zu reisen, bis er den letzten Punkt erreicht, und alles erlischt (bis auf die Elektronik natürlich müssen Sie diesen ausschalten). Entfernen Sie den Roboter, und wiederholen Sie die Verlegung der anderen oben genannten Material und alles. Nur Dump 2 weitere Kugeln Sägemehl auf der letzten Schicht. Für Ausgrabung, warteten wir mindestens 24 Stunden, bevor wir den Druck berührt. Wenn es eine effizientere und schnell trocknenden Bindemittel verwendet, könnte dies die Wartezeit verringert werden. Auszugraben, die wir entfernt die Acrylwänden des Druck Bett und ließ das Sägemehl rund um das Objekt draußen auf einer Plane. Dann nahm vorsichtig das Vakuum abgesaugt und um den Gegenstand herum und in ihr, bis das gesamte überschüssige Staub entfernt wurde. Es ist möglich, das Objekt mit einem Sprühkleber oder Lack nach dem Objekt zu stärken, ist finished.Step 12: Projekt Potential unter Möglichkeiten zur Förderung Wir glauben, dass das Potenzial der autonomen mobilen 3D-Druck ist enorm, und mit genügend Zeit und Forschung, dass dies eine praktikable Methode für den 3D-Druck eigentlichen Gebäude in der Zukunft. Es gibt natürlich noch viel mehr zu tun. Das Konzept der autonomen Maschinen konstruieren Architektur in Bottom-up-Möglichkeiten wird eine riesige Menge an Forschung in sensorischen Systemen, Kommunikationssysteme, fortschrittliche Bildverarbeitung sowie maschinelles Lernen erfordern. Wir sind auch die Auseinandersetzung mit Vorstellungen von Materialität und Skalierbarkeit. Wir vermuten, dass diese Methode sofort skalierbar, und es könnte von mehreren Arten von Robotern arbeiten zusammen, um den Aufbau erreicht werden. Eine Art würde körniges Material auf dem Boden lag, während ein anderer Typ Einlagen Bindemittel, und ein anderer gräbt. Das allein ist eine Menge Forschung zu tun gegeben. Einige Dinge, die wir sofort unter Berücksichtigung, um dieses Projekt voranzubringen, ist es, das Ausmaß der Druckgröße voranzutreiben, arbeiten automatisch Verlegematerial, weiter voran Material Potentiale und die Verwendung eines robusteren Bindemittel. Wir möchten auch auf die mehrere Maschinen arbeiten zusammen für die gemeinsame Konstruktion arbeiten. Wir denken, dass dies eine robustere Form von Machine Vision erfordern, und wir können in andere Arten von Tracking-Standort statt Bezugsmarkierungen zu suchen. Wir freuen uns, diese Forschung weiter, und Weiterentwicklung des autonomen Schwarm von mobilen 3D-Druckroboter.
Fake-Batch Hack
4 Schritt:Schritt 1: Öffnen Sie den Editor Schritt 2: DIE CODE Schritt 3: SAVE Schritt 4: RUN IT
In dieser Datei ich einen Code, und führen Sie es bitte und genießen!
Programmierung geringen Kosten Arduino-Boards mit ch340g usb-Chip.
1 Schritt:Schritt 1: Lassen Sie uns jetzt tanzen!
einige billige Arduino Boards von eBay und Amazon Begegnung Probleme bei der Programmierung, indem sie die Nachricht, dass "das Gerät nicht erkannt" oder blah blah blah Nachrichten. es ist, weil die Fahrer von arduino.cc Website ist für FTDI-Chips auf Arduino Board. aber billiger Klon Platten ch340g Boards sind anstelle von FTDI Chip. so müssen Sie ch340g USB-Treiber, bevor Sie das Arduino-Board zu installieren. die Schritt für Schritt Anleitung ist wie folgt.
Seiten: « Zurück 1 2 3 Nächster »