ett kütt wie ett kütt ist kölsch und heißt es kommt wie es kommt
2§ kölsche Grundgesetz
hatte ja so noch nie was mit Elektrotechnik zutun außer privat. Gehe jetzt auf´s Berufskollege und mache Elektrotechnischenassistent.
Druckbare Version
ett kütt wie ett kütt ist kölsch und heißt es kommt wie es kommt
2§ kölsche Grundgesetz
hatte ja so noch nie was mit Elektrotechnik zutun außer privat. Gehe jetzt auf´s Berufskollege und mache Elektrotechnischenassistent.
Dat han isch jemeekt - war jahrelang in Jrewenbrooch.Zitat:
ett kütt ... kölsch ...
Cool!
Ich bin aber gebürtiger Sauerländer und habe nur Verbindung zu Köln Rheinland weil dort 3/4 meiner Verwandtschaft wohnt.
War eben im Baumarkt und konnte zum Spiralschlauch nicht Nein sagen. Den werde ich dann Verwenden um die Kabel zusammen zu halten. Dafür brauch die aber auch einen gewissen Radius der zusammengehaltenen Kabel. Werde also eher mit der anderen Methode von Rabenauge am Robo arbeiten.
- - - Aktualisiert - - -
Habe jetzt das Gehäuse fertig gebaut:
Anhang 28711
aber leider keine richtigen Schrauben um den Arduino und Treiber auf dem Holz zu befestigen :| und ich war eben noch im Baumarkt ](*,)
Klar können sie kommunizieren. Wie Joe schon sagt: da hast du ziemlich freie Wahl der Waffen. Ich würds zuerst per I2C versuchen (Gewohnheit, ich nehm I2C, wann immer es geht), aber man kann auch die seriellen Schnittstellen benutzen (hat der MEGA dreie von, und notfalls wär auch das noch aufstockbar per Software), im Uno müsst mans per Software machen, damit die Hardware-Schnittstelle zum programmieren frei bleibt-aber auch kein Ding. SPI müste eigentlich auch gehn....
Bei grösseren räumlichen Entfernungen gehts dann ohne Kabel auch noch, XBee oder irgendwelche anderen Funkmodule, Wlan, Infrarot- da kann man bauen, was man will-auch GSM :cool: Dann kann der Mega sogar den kleinen Bruder Uno in Japan kontaktieren. ;)
Brauchste aber für sowas eher nicht, da viele Pins zwischen den beiden kompatibel sind-die meisten UNO-Shields z.B. passen auf dem Mega ebenfalls (aber hier Vorsicht, z.B. die I2C-Schnittstelle ist wo anders!)-und wer benutzt schon Shields. Find die eher unpraktisch..
Fürn Mega sprechen generell die Massen an Pins (bei meinem Monstertruck sind noch so um die 25 digitale und 10 oder 11 analoge _frei_!) obwohl der ja schon eher üppig ausgestattet ist (Spannungssensor, GPS, nen IR-Entfernungsmesser, vier US-Entfernungsmesser, drei "Servos", analoger Joystick, Display, SD-Karten-Slot, Buzzer), nen Kompass oder gleich ne MPU (mal sehen..vermutlich eher die MPU) kann ich noch mit an den I2C packen, ohne auch nur einen Extrapin zu brauchen (da würd noch mehr gehen)- und bisher brauch ich knapp 3k Ram-von 8.
Es wäre beispielsweise problemlos noch ein Grafikdisplay drin- hätt ich auch da, will ich aber nicht, oder diverse weitere Geschichten.
Obendrein hat er noch andere Annehmlichkeiten, z.B. mehr Interrupts (die braucht man schneller als man glaubt, etliche Bibliotheken wirtschaften damit, ohne es so direkt zu sagen).
Und was solls: die kosten bei Sainsmart um die 15€-nen Uno so um die 10- da überlege ich nicht soo lange.
Prinzipiell sind sie auch recht problemlos gegeneinander austauschbar, ich hatte ja erst den UNO drauf, nach dem Umbau nen paar Pinzuordnungen ändern, und das wars im wesentlichen.
Zu deinen Schrauben: das wird ein Problem bleiben. Die üblichen Schrauben haben zu grosse Köpfe, die kriegst an den Ecken nicht rein. Wenn du an die Ecken musst zum befestigen gibts zwei Möglichkeiten: zu "kleine" Schrauben benutzen (weil die einfach kleinere Köppe haben) oder Schraubenköpfe runterdrehn/schleifen/feilen. Das ist eine der echten Macken der Arduinos (beim Mega auch, allerdings hat der in der Mitte noch brauchbare Löcher, weiss ich beim Uno grad nicht, mein Uno ist eh anders), total hirnrissig. :(
Genauso wie die Steckerleiste, die mittendrin das Raster wechselt.
Ich habe den Arduino Uno schon länger und dachte mir den Mega brauchst du sowieso eher nicht.
Tja jetzt stellt sich was anderes heraus.
Dachte nämlich noch an ein kleines Display was ich noch rumliegen habe. Aber erstmal muss er fahren;)
hier werde ich den Mega bestimmt nicht kaufen:
http://www.conrad.de/ce/de/product/1...f=searchDetail
habe mich nochmal bisschen im Internet über US-Sensoren und Arduino umgeschaut und gesehen das viele vorne einen Servo am Robo haben der sich um 180° dreht um alles vor ihm abzudecken.
dann brauche ich schon mal mindestens 4 Servos.
1 Lenkung
1 US-Sensor
2 Reserve...
dann noch ein paar Lochrasterplatinen
ca. 6 Schraubklemmen
...
- - - Aktualisiert - - -
Hab's jetzt hinbekommen.
Mein Bruder hat mir geholfen. Der hatte die richtigen schrauben da.
Nur der Uno hat wieder rum gemuckt und ich konnte nur 2 schrauben benutzen. Aber es hält.
Heute müssten eigentlich die US-Sensoren kommen.
Mal schauen:)
Sowas kannste hierzulande nur kaufen, wenn du nen entsprechendes Budget hat-ist leider so.
Und selbst die Original-Arduinos sind soo hochwertig nicht verarbeitet, da hab ich schon Macken gesehn, die ich bei nem Chinesen erwarten würde, aber da eben _nicht_ hab (schlampige Bestückung, sowas). Zumal die Chinesen-Nachbauten _manchmal_ sogar besser sind-mein UNO hat z.B. die ganzen Buchsenleisten, die aussen rum gehen, innen nochmal: Als dreipolige Stiftleisten (kann man theoretisch Servos direkt anstecken)- schon praktisch. Da hat man dann auch genug Abriffe für Masse und 5V.
Gibt allerdings auch ausgesprochen "Billige" Nachbauten, die mitunter eben nicht vollständig kompatibel sind, oder schonmal den Geist aufgeben. Wobei man da nie genau weiss, worans wirtklich lag, kann auch ne fehlerhafte Verkabelung gewesen sein.
Meinen Mega auf dem Truck halten auch nur zwei Schrauben- das hält.
Mit dem schwenkbaren US-Sensor das ist so ne Sache-hatte ich am Buggy aber dort konnt er nicht allzu weit schwenken: die HC-SR04 haben nen Erfassungsbereich von, glaub ich, so um die 20 Grad (hab irgendwo ne masstäbliche Skizze, die ich mir fürs Monster mal gemacht hatte), wenn man den nicht wirklich weit schwenken kann, ist es relativ nutzlos. Zumal die Messungen bisschen Zeit brauchen, und das Servo die jeweilige Position ja auch erst angefahren haben muss-auch das dauert bisschen.
Deswegen hab ich das beim Monster gar nicht erst gemacht- der Sharp hinten misst entschieden schneller und vor allem: sehr schmal. Da macht das mehr Sinn.
Was dein Display angeht: was haste denn? Nen LCD-Textdisplay?
Falls es eins der üblichen ist, kann man die relativ einfach auf I2C umrüsten (wenn es deins nicht schon ist, die kriegt man auch gleich so), dann vertuste da keine extra Pins für.
Grafikdisplay am Uno _geht_ bis zu ner gewissen Grösse schon, bringt aber wenig, weil zu wenig Speicher da ist. Und nen Touchscreen ist dann schon weitgehend sinnfrei. Da ist der Uno alleine damit gut beschäftigt.
Was auch toll ist: die kleinen Crius-Oled-Displays. Musst mal bei Ebay schnüffeln, die kleinen sind so 1.5x2.5cm "gross"- grafikfähig, dabei ein Kontrastverhältnis,was jedes TFT erblassen lässt, gestochen scharf (man kann die winzige Schrift echt gut lesen, auch draussen) UND sprechen von Hause aus I2C. Dazu superschnell (um Welten schneller als z.B. die 1.8" TFT`s, die ich auch hier hab), und nen abartig geringen Stromverbrauch.
Gibts ein-zwei-und inzwischen wohl auch RGB-farbig. Hab nen einfarbiges am Segway- und find das Teil Klasse. Dazu billiger zu bekommen als alle anderen-für nen Fünfer...
Leider kam der Postbote heute ohne ein Paket für mich;-)
das ist ein einfaches LCD-Textdisplay.
Was ich immer noch nicht ganz verstehe ist I2C:confused: habe mir es mal in RN-Wissen durchgelesen aber ich versteh nur Bahnhof.
I2C ist ein serieller Bus. Huptvorteile: kommt mit zwei Leitungen (plus und Minus nich mitgerechnet natürlich) aus, ist -im allgemeinen-ausreichend schnell und es gibt alles mögliche für.
Z.B Displays, jede Menge Sensoren (das steht dann bei)-eben alles mögliche. Und die kann man (wenn die Adressen passen) alle an die zwei Drähte hängen.
Zudem grad bei Arduino mit der Wire-Bibliothek wirklich simpel zu handhaben.
http://arduino.cc/de/Reference/Wire
Da brauchste dann für dein Display nur noch zwei Leitungen statt vieren (oder wieviel das sonst benötigt), und die sind auch nur belegt, wenn du mit ihm kommunizierst-in der übrigen Zeit kannst du über die mit was anderem auch reden.
Mit nem anderen Arduino z.B. auch.
Das ist ja cool!
Ich habe aber glaube 10 Anschlüsse insgesamt an dem Display.
Müsstest du mal genau sagen, welches. Falls es eins der billigen zwei-oder vierzeligen ist: http://www.ebay.de/itm/LCD-Anzeige-1...p2054897.l4275
kannst du den: http://www.ebay.de/itm/Serielle-IIC-...p2054897.l5664
hinten dran löten und das Ding ist I2C-fähig.
Das ist dann das Modul, was ich aufm Monster hab (leider nur die zweizeilige Version, die gabs beim Starterpack dazu, nen 4x20 wär mir lieber gewesen, aber ggf. bau ich mir da eins mal selber, das geht nämlich auch kleiner).
Ich habe es leider bei Conrad nicht mehr gefunden.
Aber hier Fotos:
Anhang 28721
Anhang 28722
Ohne Datenblatt und/oder wenigstens..beschriftete Pins wird das nix.
Wenn du weisst, wie es angeschlossen werden muss (und, dass es auch mit 5V klarkommt- da hinten drauf ist etliches nicht bestückt, wäre also denkbar, das Teil arbeitet mit weniger), nimms halt. Ansonsten würd ich mir gleich sowas besorgen: http://www.ebay.de/itm/Newest-CRIUS-...item3f31c29967
Das ist eins der kleinen Oled-Displays.
Nen Beispiel, was der Winzling drauf hat, haste z.B. da: http://www.youtube.com/watch?v=umEerh-PrLY
Gibts allerdings in verschiedenen Farben, meins schreibt weiss.
Ne Datenblatt etc. habe ich nicht.
hatte es aber schon mal am laufen wodurch ich die Pin Belegung morgen früh mal nach schauen kann.
Sieht ja nich schlecht aus:)
Pin 1 = GND
Pin 2 = +5V
Pin 3 = VO (10k - 20k Poti)
Pin 4 = RS
Pin 5 = RW(GND)
Pin 6 = Enable
Pin 11, 12, 13, 14 = 4-Bit Daten (D4, D5, D6, D7)
Pin 15, 16 = Hintergrundbeleuchtung (+5V, GND)
Im Allgemeinen kommt man (wenns knapp hergeht, aber es reicht wohl immer/meistens) mit acht Pinns aus: 4 Datenbits, zwei Steuerbits, Vcc und GND. Bei mir geht das dann z.B. so (wie gesagt - noArduino):Das R/W kann fest beschaltet werden, und das 10k-Kontrast-Poti (winzige SMD-Version) habe ich auf meinen zweizeiligen 16x2-LCDs direkt auf die Anschlusspads gelötet. Ist ein bisschen Fummelei, ein kleiner Papierschnippsel als Isolierung- und schon ist das LCD mit Flachbandkabel am 2x10-Wannenstecker bestens aufgehoben. Wer das LCD auslesen will, braucht dann aber doch den Pin R/W.Code:// - - - - - - - - - - - - - - -
// ####>>>> Initialisierung/Anschlüsse von PORT B für LCD DEM 16x2
// data bit 4 PB0 0 A WS Pin1 |
// data bit 5 PB1 1 A Pin2 | -- Der 10-polige Wannenstecker
// data bit 6 PB2 2 A Pin3 | ist an die Belegung
// data bit 7 SCK, PB3 3 A Pin4 | des Transitortester angepasst
// RS line PB4 RS Pin5 | es kommen noch
// ENABLE line MOSI, PB5 EN1 Pin6 | Pin 9 GND und
// R/W (offen) MISO, PB6 R/W Pin7 | Pin 10 Vcc dazu
// NC (TasteC) SCK, PB7 NC Pin8 |___________________________
// GND Pin9
// Vcc Pn10 | Anmerkg: ENABLE line !
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
......Anhang 28725
Anmerkung: WS im Codefenster bedeutet "Pinn von WannenStecker", der "Code" stammt aus meinem üblichen Quellmodul, hier für mega1284 und Buchse für PortB.
Ok.
Bis jetzt weiß ich aber noch nicht was ich mir darauf anzeigen lassen will.
Ich habe mich nochmal schlau über die US- Sensoren gemacht und weiß jetzt wie sie funktionieren.
Das ankommende Echo wird dann ja als PWM Wert zurück gegeben und kann umgerechnet werden in cm mit
der doppelten Schallgeschwindigkeit (hin zurück) wenn ich mich nicht irre.
Und jetzt zu meinem Problem.
Bis jetzt Steuer ich den Motor ja über 4 Zeilen an:
digitalWrite(DIR1, HIGH);
digitalWrite(DIR2, HIGH);
digitalWrite(PWM1, 170);
digitalWrite(PWM2, 170);
Jetzt dachte ich das wenn ein Gegenstand z.B. 7 cm vor dem US-Sensor ist das die Motoren langsam rückwärts laufen.
Da dachte ich dann an eine If-bedingung
if(abstand < 8 )
Und dann die Motoren langsam rückwärts laufen lassen.
Das habe ich mal mit einer anderen IF-bedingung schon mal probiert weil die US-Sensoren leider noch Nicht da sind:( und gemerkt das ich nicht 4 Befehle unter if packen kann.
Geht das oder bin ich mit If da völlig auf dem Holzweg?
Weiss zwar nicht, von welchen Sensoren du genau sprichst, aber die HC-SR04 geben nix PWM zurück.
Die machen das-im Prinzip- so: zuerst gibst du auf den Trigger-Pin Strom.
Dann schreit das Teil los-du schaltest Trig wieder ab und liest _nun_ den Echopin ein (z.B. mit pulseIn).
Die Zeit zwischen "Rufen" und "Echo hören" wird gemessen, und kann dann in ne Entfernung umgerechnet werden.
Das sieht dann z.B. so aus:
Nun überlegst du dir halt, wie nahe ran du willst bzw. wanns Zeit wird, umzudrehen, und schreibst dann ungefähr sowas:Code:const int TrigPin = A0;
const int EchoPin = A1;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW); //Low-high-low level sent a short time pulse to TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //Echo time converted into cm
cm = (int(cm * 100.0)) / 100.0; // retain two decimal places
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}
Ob ich das mit dem map() jetzt aus der Kalten raus so richtig geschrieben hab, müsstest du testen-wenn es hinhaut, bleibt der Roboter 10 cm vorm Hindernis stehen, und je näher es kommt, umso schneller haut er rückwärts ab.Code:if (cm<10)
{
fahreZurueck();
}
void fahreZurueck()
{
lege rueckwärtsgang ein; // halt den Pin umschalten oder was auch immer
PWM_motor= map(cm,0,10,0,255);
}
Nachzulesen da: http://arduino.cc/en/pmwiki.php?n=Reference/Map
Das ganze geht vorwärts natürlich auch, so kann man z.B. rechtzeitig vomn Gas gehen, wenn sich ein Hindernis nähert...
Und klar kannst du im if() beliebig viele Befehle schreiben (auch ganze Unterprogramme aufrufen usw.) so:
http://arduino.cc/en/pmwiki.php?n=Reference/IfCode:if(bedingung)
{
mache was;
mache noch was;
.........;
}
Ok danke. Werde ich heute Abend mal ausprobieren.
Muss jetzt weg.
In meiner If Anweisung habe ich die {} vergessen ](*,)
Habe heute Post aus Singapur bekommen. Endlich sind die HC-SR04 Ultraschallsensoren da. Bin direkt hoch an den PC, habe mir den Arduino gepackt und sie ausprobiert. Funktioniert alles super.
Heute werde ich mal versuchen einen Sketch zu schreiben indem ich versuche eine grüne LED die ganze Zeit über laufen zulassen bis ich meine Hand (Hindernis) 10 cm vor den US-Sensor halte und die Grüne LED aus geht, dafür eine Gelbe an. Nach 3 Sekunden soll alles wieder von vorne anfangen.(blicke durch deinen Sketch Rabenauge noch nicht durch). Die LED´s benutze ich erstmal als Probe um dem Sketch zu schreiben. Hinterher werde ich natürlich damit die Motoren ansteuern.
Die Steckerleisten sind leider immer noch nicht da. Aber während der langen warte Zeit habe ich mir einige Gedanken zu einer Platine gemacht wie ich sie gestalten will. Weil wie gesagt, 2 Breadboards und viele Flexible Steckbrücken sind nicht gerade ordentlich und es ist schwer dadurch zu blicken.
Ich habe leider kein Programm wo ich die Platine mal aufbauen kann um sie mal so durch zugehen wie alles platziert werden muss(sonst muss ich mich halt mal ans Zeichenbrett wagen:) ). Ich halte mal die Augen offen.
Fürs Steckbrettl (und den meisten Arduinokram) ist Fritzing am effektivsten.
Lochraster-Leiterplatten entwerfe ich (wenn es denn komplizierter wird) mit Lochmaster-aber der kostet was.
Es gibt auch ein kostenloses Programm-Blackboard oder so. Lief auf meinem Rechner grausam, drum hab ichs entsorgt.
Mein Programm oben ist doch easy-was von verstehst du denn nicht?
ok habe mir gerade mal Fritzing angeschaut. Da werde ich mich jetzt mal ran setzen.
deinen 1. Code verstehe ich. Der gibt dann doch den Abstand zum Hindernis am Serial Monitor aus oder?
bei dem 2 habe ich ein paar Probleme.
also zuerst kommt ja if.
wenn cm kleiner als 10 dann fahre zurück.
so dann kommt die Funktion fahre zurück.
dann kommt der befehl map. Habe ich mir mal auf der Internetseite durchgelesen aber irgendwie hakt es da:(
Mit map() kannst du Wertebereiche anpassen.
Nehmen wir an, du hast einen analogen Eingang-der kann von 0 bis 1024 haben (Poti oder was dran).
Mit dem Poti willst du nun nen Motor absteuern, so dass bei Poti=0 der Motor steht, und bei Poti=100% der Motor Vollgas läuft.
Du kannst aber nur 255 PWM-Stufen ausgeben, also mappst du den einen Bereich auf den anderen:
drehzahl=map(potiwert, 0,1023,0,255).
Damit werden die Wertebereiche automatisch aneinander abgepasst.
Würde da dann nicht einfach
drehzahl=potiwert*256/1024 reichen?
Das kann ich dir nicht beantworten Geistesblitz. Dafür kann ich das noch nicht so gut. Rabenauge dann schon eher ;)
Habe mich heute Morgen mal dran gesetzt und dabei ist das entstanden:
Anhang 28855
Ich baue mir Stecker aus den Kopfleisten die ich mir noch bestellt habe um flexibler zu sein.
Oben der Plan ist glaube nicht ganz ordentlich geworden. Weil sich mehrere Kabel überlappen. Habe es oft probiert ohne zu schaffen und das ist das beste Ergebnis.
Der Schaltplan sieht doch schon recht brauchbar aus.
Sieh mal vorsichtigerweise noch nen Schalter vor in der Zuleitung zu den Motoren-offenbar haben die grossen Treiberplatinen teilweise das Verhalten, dass sie während nem Reset Strom auf die Motoren geben-meine im Segway tut es nicht, aber im Arduinoforum hat jemand das Problem-trotz der Pulldowns.
Wenn du aber die Plusleitung zwischen Akku und Motor-Platine unterbrichst, muss da Ruhe sein.
In ein, zwei Tagen geht mein Monstertruck übrigens auch wieder auf Piste-hab das Elektronik-Deck noch mal komplett neu gemacht, da mir zu viel Dreck (Monstertrucks sind halt Wildschweine auf Rädern) rauf kam. Die Monsterreifen schaufeln den ja fleissig unter die Karosse.
Dann gibts auch haltbarere Kabelbäume, und das vorherige Mäusenest unter der Haube verschwindet.
Der Kompass ist leider allerdings noch immer nicht da, und ohne den ist das GPS bei einem so schnellen Auto nicht so wirklich zu gebrauchen, wie ich festgestellt hab. Aber _irgendwann_ wird der ja nun bald mal eintreffen..
Zu der map()-funktion: http://arduino.cc/en/pmwiki.php?n=Reference/Map ganz unten steht, wie die intern arbeitet.
@KlebWax: stimmt, das wär noch einfacher, war ich nicht ganz aufmerksam...
Jedenfalls wäre die Lösung mit dem Shift wesentlich effizienter als die Map-Funktion, würde ich mal sagen, da Map anscheinend die ganze Formel ausrechnet, auch wenn da Terme wegfallen würden.
Schon-aber dafür gibt es z.B. auch die Möglichkeit, Werte einfach "umzudrehen" indem man den höchsten Eingangswert auf den niedrigsten Ausgangswert mappt und so weiter.
Auch kann man die Bereiche leicht anpassen, indem man Werte limitiert.Das funktioniert sowohl im Ein-als auch im Ausgang, wenn man z.B. nie "Vollgas" geben will.
Klar, nur scheint das in diesem Fall ja nicht nötig zu sein
So endlich bin ich auf der neuen Schule aber ich habe gemerkt das ich kaum noch Freizeit habe und ich Abends auch müde bin wodurch ich dieses Projekt erstmal einfrieren werde.
Nach der Schule (2017) werde ich mich dann wohl nochmal damit beschäftigen oder sogar als Abschlussprojekt verwenden. Natürlich beschäftige ich mich weiterhin mit diesem Thema (Roboter, autonome Fahrzeuge z.B. in den Ferien) weil es mich Interessiert werde aber dennoch erstmal eine Pause einlegen.
Noch eine kleine Frage hier an das Forum habe ich aber:)
habe was von Bitcoins gehört und das man die mit dem Raspberry Pi Minen kann. Was haltet ihr davon ob es das wohl bringt. Also im Preis-Leistungs-Verhältnis Stromkosten zu Bitcoins.
Ich habe keinen pi und auch keinen dazugehörigen USB-Miner und werde ihn mir auch voraussichtlich nicht holen, aber nur aus Interesse wollte ich mal eure Meinung dazu hören was ihr davon haltet. Im Internet ist die Meinung ja eher zwei gespalten.