Go Down

Topic: Brauche dringend hilfe (Read 4 times) previous topic - next topic

sth77

So, das Nullsetzen mittels Taster ist noch nicht drin, aber sonst funktioniert der Code erst mal. :D
Sollte Quick&Dirty werden, allerdings wurde aus dem quick nichts... ;)

[edit] Ein Video dazu: http://dl.dropbox.com/u/57859158/VIDEO0010.3gp :D

Code: [Select]

#include <Wire.h>
#include "nunchuck_funcs.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,10,7,6,5,4);

byte L1[8] = {B00001,B00001,B00001,B00001,B00001,B00001,B00001,B00001};
byte L2[8] = {B00011,B00011,B00011,B00011,B00011,B00011,B00011,B00011};
byte L3[8] = {B00111,B00111,B00111,B00111,B00111,B00111,B00111,B00111};
byte L4[8] = {B01111,B01111,B01111,B01111,B01111,B01111,B01111,B01111};
byte R1[8] = {B10000,B10000,B10000,B10000,B10000,B10000,B10000,B10000};
byte R2[8] = {B11000,B11000,B11000,B11000,B11000,B11000,B11000,B11000};
byte R3[8] = {B11100,B11100,B11100,B11100,B11100,B11100,B11100,B11100};
byte R4[8] = {B11110,B11110,B11110,B11110,B11110,B11110,B11110,B11110};

byte zero = 115;

void setup(){
 nunchuck_setpowerpins();
 nunchuck_init();
 lcd.begin(16,2);
 lcd.createChar(1,L1);
 lcd.createChar(2,L2);
 lcd.createChar(3,L3);
 lcd.createChar(4,L4);
 lcd.createChar(5,R1);
 lcd.createChar(6,R2);
 lcd.createChar(7,R3);
 lcd.createChar(8,R4);
}

void loop(){
 nunchuck_get_data();
 int accx  = nunchuck_accelx(); // ranges from approx 55 - 175
           
 lcd.setCursor(0,0);
 lcd.print("Neigung:");
 lcd.setCursor(13,0);
 lcd.print(accx-zero);
 if (accx<zero+40&&accx>zero-40) showBar(accx);  
 
 delay (100);
 lcd.clear ();
}

void showBar (byte w){
 byte col;
 byte c;
 if (w==zero){
   lcd.setCursor(7,1);
   lcd.write (1);
   lcd.write (5);
 } else {
   if (w<zero){
     c=w%5;
     if (c==0) c=255;
     if (c==1) c=4;
     if (c==2) c=3;
     if (c==3) c=2;
     if (c==4) c=1;
     col=(w-zero+1)/5+7;
   }
   if (w>zero){
     c=w%5;
     if (c==0) c=255;
     if (c==1) c=5;
     if (c==2) c=6;
     if (c==3) c=7;
     if (c==4) c=8;
     col=(w-zero-1)/5+8;
   }
   if (col<7){
     lcd.setCursor (col+1,1);
     for (int i=1; i<=7-col;i++) lcd.write (255);
   }  
   if (col>8){
     lcd.setCursor (8,1);
     for (int i=1; i<col-7;i++) lcd.write (255);
   }  
   lcd.setCursor(col,1);
   lcd.write (c);
 }
}


Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

MueThoS

Fine fine!!!
Ziemlich genau das was ich in meinem ersten Post
gemeint hatte.

Aber schön umgesetzt!

Joghurt

Klasse!  :smiley-eek: :)

@konni87: Es würd uns interessieren was es für ne Note gab! ;)

sth77

@Muethos: Ja, dieses Darstellungsvariante schien mir dann auch am besten, auch wenn für mich die Mathematik dahinter nicht ganz trivial war: Finde die richtige Position auf dem Display, setze das das richtige Zeichen, fülle bis zum Nullpunkt alles mit schwarzen Blöcken. Und das ganze dann in die positive und in die negative Richtung. Ich bin mir sicher, dass manch einer das noch optimieren kann, aber es tut ja vorerst was es soll...
Nun habe ich 8 Zeichen (5x8 Pixel) selbst definiert, der volle Block ist zum Glück im Zeichensatz enthalten, sonst hätte das nicht so gut geklappt.

@Joghurt: Lob höre ich doch gern! ;)

Habe gestern abend noch ein Poti für den Kontrast eingebaut, hatte aber nicht mehr die Muße, das zu filmen. Auch auf die Hintergrundbeleuchtung habe ich verzichtet, es ging mir ja hauptsächlich um die Balkendarstellung.
Den Nullpunkt habe ich bewusst variabel gehalten, weil der Sketch ja auf eine manuelle Nullung per Tastendruck erweitert werden soll.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Joghurt


Den Nullpunkt habe ich bewusst variabel gehalten, weil der Sketch ja auf eine manuelle Nullung per Tastendruck erweitert werden soll.


Guter Ansatz, jetzt kann man ganz einfach per
Code: [Select]
if (digitalRead(BUTTON) || nunchuck_zbutton() || nunchuck_cbutton())
 zero = nunchuck_accelx();

oder wie auch immer den Nullpunkt setzen. :)

sth77

Den Wert schreiben wir dann auch fest ins Eeprom, dass man den nicht zwingend bei jedem Start neu ermitteln muss.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Joghurt


sth77

Das grenzt keinesfalls an Genialität, das hätte mit genügend Zeit fast jeder schaffen können. Immerhin war es eine sportliche Leistung von allen Beteiligten, das zeugt doch von der Kraft einer starken Community. Haben wir jemals in so kurzer Zeit einen siebenseitigen Thread "erschaffen"? ;)
Dessen ungeachtet möchte ich nochmal festhalten, dass dies eine Ausnahmesituation war. Es soll nicht zur Regel werden, dass hier prüfungsrelevante Dinge fremdbearbeitet werden. Unter dem Gesichtspunkt, dass dies jedoch nur eine Teilleistung ist, haben wir nochmal ein Auge zugedrückt. Und der Ehrgeiz war ja sowieso schon geweckt...

Dann viel Glück bei den Prüfungen, schau bald wieder rein, die Sache mit der Nullung bekommen wir auch noch ohne zusätzlichen Hardwareaufwand hin - vielleicht sogar schon heute abend.

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Udo Klein

Auch wenn Euch das jetzt nicht gefällt - Eure Hilfsbereitschaft in Ehren - aber ich glaube es nicht, daß die Community hier ein Auge zudrücken kann. Das war keine Hausaufgabenhilfe, hier wurde gerade ein Teil einer Prüfungsleistung durch die Community erbracht. Soll heißen: egal wieviele Augen hier zugedrückt werden, die Entscheidung ob das OK ist oder nicht treffen die Prüfer und nicht die Arduino Community.

@konni87: was sagen die Prüfer dazu? Ist sowas üblich oder mußt Du jetzt hoffen, daß das keiner merkt?
Check out my experiments http://blog.blinkenlight.net

df6ih

Ich habe hier nicht geholfen und meiner Meinung nach hat die Gemeinschaft hier lediglich den Lehrer ersetzt. Es geht nicht um eine Doktorarbeit und Bundespräsident will er vermutlich nicht werden. Überdies ist das Thema in großen Teilen fachfremd. Schön zu sehen dass es sowas von Hilfe noch gibt !! Muss ich mich jetzt schämen weil ich gestern eine DCF 77 Library verwendet habe ?

Wer sich hier erbrüstet sollte eventuell nochmal in sich gehen. Mein Cent ;)

Udo Klein

Nein, Du mußt Dich nicht schämen, daß Du eine Library verwendest. Du mußt aber auch nicht gleich persönlich werden wenn Dir eine Ansicht nicht gefällt.

Soweit ich das verstehe ist das Projekt Bestandteil der Prüfung. Klar ist das keine Doktorarbeit, aber die Frage ist trotzdem ob das OK ist. Mein Punkt war nur, daß diese Entscheidung nicht von uns getroffen wird sondern von jemand anders. Egal ob Dir das gefällt oder nicht.

Die ursprüngliche Anfrage hat sich jedenfalls nicht darauf bezogen, daß er an einer Stelle hängt und ein paar Tipps braucht. Er hat keine Ahnung von Programmierung und die Community sagt ihm wo er den Code findet und wie er ihn ändern muß. Ich finde das jedenfalls nicht 100% OK.

Im Roboternetz war die Antwort meiner Meinung nach angemessen: http://www.roboternetz.de/community/threads/56734-ben%C3%B6tige-sehr-dringend-hilfe-das-bestehen-meines-meisterkurses-h%C3%A4ngt-davon-ab.
Check out my experiments http://blog.blinkenlight.net

Joghurt

Ich denke auch dass das ok war, da wir hier keine fertige Prüfungsarbeit abgeliefert haben sondern der Code maximal als Technologiedemonstrator taugt.

Da ist wie mit ner Schüssel Wasser: Wenn Du die in die Hand nimmst und neigst, dann neigt sich auch das Wasser, der Displaybalken bewegt sich. Wenn Du die Schüssel aber aufs Motorrad spannst und damit in die Kurve gehst, dann wird das Wasser relativ zum Motorrad (mehr oder weniger) in Ruhe bleiben. Wäre dem nicht so würde man ja umfallen... ;)

Ich denke mal, damit er nicht durchrasselt sollte es ausreichen, aber für den funktionierenden Schräglagensensor, den er bauen sollte, wirds für ne richtig gute Note nicht reichen.


@konni87: Hmm... Darfst Du den Sensor eigentlich auch an den Helm schrauben? Da der Helm in der Kurve ja normalerweise waagrecht bleibt könnte es damit (mit umgekehrten Vorzeichen) sogar funktionieren, theoretisch... :)

Udo Klein

Ich bin schon ewig nicht mehr Motorrad gefahren. Warum bleibt der Helm waagrecht?

Das die Konstruktion auf dem Motorrad nicht funktioniert ist mir auch klar. Da gehört schon mehr dazu. Vor allem wenn die Konstruktion dauerhaft funktionieren soll.

Wenn die Schräglage ermittelt werden soll, dann geht das allerdings schon mit einem fest eingebauten Beschleunigungssensor. Nur muß man dazu den Betrag der Beschleunigung und den zeitlichen Verlauf auswerten. Weiterhin braucht man eine brauchbare Filterung um mit Vibrationen fertig zu werden.
Check out my experiments http://blog.blinkenlight.net

Joghurt


Ich bin schon ewig nicht mehr Motorrad gefahren. Warum bleibt der Helm waagrecht?

Weil man dann einen besseren Überlick über die Kurve hat und schneller reagieren kann. :)

Go Up