PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ASURO-Probleme bei Kombination von Tastern



Barbara1
17.08.2005, 07:41
Hallo!
Beim Selbsttest funktionieren die Taster einzeln einwandfrei. Wenn ich aber z. B. zwei Taster gemeinsam drücke, dann kommen nicht nur die beiden zugehörigen Signale sondern auch noch weitere.
Hatte jemand schon mal ein ähnliches Problem?
Barbara

RCO
17.08.2005, 11:19
Das ist ärgerlich, kann aber mit den Toleranzen der Widerstände zusammenhängen. Bei mir stimmt eigentlich alles soweit.

Andun
17.08.2005, 12:28
Ja, bei mir und anderen löst zum Beispiel der erste Taster im selbsttest auch immer die Aktion des 6. aus.

shiosai
19.08.2005, 10:06
genau so Probleme habe ich auch. Der erste löst noch den 6ten aus und wenn ansonsten was kombiniert wird kommen teilweise komische Sachen raus.
Ich weiß jetzt nicht ob man da noch was gegen machen kann. Die Widerständestimme alle...

Vogon
19.08.2005, 21:42
Schau doch mal was dein Asuro überhaupt liefert.

sw=PollSwitch();
PrintInt(sw);

Das war bei meinem auch etwas daneben.

Das kann man in der asuro.c berichtigen.
Schau dir dort die Function Pollswitch() an.
Nachdem ich die Konstante von 63 in 65 geändert habe, gehen jetzt alle Tasten richtig.
Der Fehler sind durch die Toleranz der Widerstände und der Referenzspannung des Analogwandlers

alt: return ((10240000L/(long)i-10000L)*63L+5000L)/10000;
neu: return ((10240000L/(long)i-10000L)*65L+5000L)/10000;

shiosai
25.08.2005, 16:19
danke für deine Antwort.

Bis jetzt habe ich noch nicht mit der ASURO Programmierung angefangen, da ich zur Zeit an einem anderem Projekt arbeite. Aber wenn ich soweit fertig bin, werdeich mir mein neues haustier vorknöpfen und deine deine Vorschläge berückschtigen.

mfg shio

pebisoft
25.08.2005, 16:52
hallo, die taster am asuro kommen doch nur zur geltung, wenn ihr ihn als fussballroboter nehmt, dafür sind die taster vorgesehen , der ball passt genau in die ausbuchtung rein.
ich wundere mich, was ihr euch hier im asuro-forum so an den tastern aufgeilt. ich würde die beim zusammenbau erst garnicht mit reinnehmen, dann habt ihr nämlich wieder pins frei für erkennungssachen (sharpsensor).
mfg pebisoft

shiosai
25.08.2005, 17:02
Ich denke mal auf Grund derTaster kann man Hindernisse besser lokalisieren und umfahren, wobei ich mich mit der Materie ehrlich gesagt nicht wirklich gut auskenne.

Manni2k
25.08.2005, 17:10
@ pebisoft : Ich wette bei dir funktionieren die Taster[/php]

pebisoft
25.08.2005, 17:54
bei mir funktionieren diese, weil ich den robby als testgerät bekommen habe im dezember. wenn ich mir den asuro gekauft hätte, wären diese dinger nicht drangekommen, weil sie, wenn sie nicht als balltaster genommen werden unnütz am gerät sind.
zur zeit läuft mein asuro als wegstreckenzähler hinten angehängt am küchenbrettroboter.
siehe: "album,persönliche galerie, pebisoft"
mfg pebisoft

shiosai
25.08.2005, 18:00
[..] weil sie, wenn sie nicht als balltaster genommen werden unnütz am gerät sind.

Es wäre nett wenn du mich, besonders in Bezug auf meinen letzten Post, auch aufklären könntest weshalb das so ist.
Danke

Andun
25.08.2005, 18:12
Naja, also er meint wohl, dass man die Sensoren die nach innen zeigen nicht braucht, da diese in der Ausbuchtung nur sinn machen, wenn man damit zum Beispiel einen Ball erkennen will. Also ist es seine Meinung dass man diese(ich glaube er meint auch nur die inneren) rausnehmen kann und durch etwas anderes ersetzen soll.

Was mir dabei aber einfällt: Nur die beiden Taster rauszunehmen, bringt ja nciht viel, da die an dem ADC hängen. So wie ich ihn verstehe will er also wo doch alle Taster abbauen und statt dessen einen Sharp oder so anbauen.

Naja, wie auch immer, zu Anfang und für Anfänger ist es aber bestimmt besser den Asuro erstmal so zu bauen wie es gedacht ist und wie es auch gut dokumentiert ist.

So long

Andun

Manni2k
25.08.2005, 18:26
mMm machen die inneren Taster auch so Sinn - kommt der ASURO schräg gegen ein Tischbein, springen nur diese Sensoren an (ja, mein Tischbein neben mir hat fast genau die Abmaße von einem Tischtennisball).

pebisoft
25.08.2005, 22:05
der asuro wurde als fussballroboter konzipiert. es liefen damit auch schon wettkämpfe. man baut keinen roboter der erst die möbel zerkratzt und dann rückwärts fährt, das wär die blödsinnigste konstruktion. ein roboter erkennt die hindernisse so rechtzeitig, das er auch noch mit einer drehung ausweichen kann ohne rückwärtsfahrt und ohne die möbel zu zerkratzen. also trennt euch einmal von diesen sogenannten berührungssensoren.
mfg pebisoft

shiosai
25.08.2005, 22:19
nicht jeder ist so empfindlich was möbel angeht bzw. hat so empfindliche Möbel in Reichweite seines "Experimentierroboters". Wobei ich zugeben muss, dass sich so sein Sensor doch sehr verlockend und komfortabel anhört. Aber es reicht wohl auch dafür nur die mittleren Taster zu opfern ..oder?

Andun
25.08.2005, 23:07
Naja, das Problem ist, wie die Taster angeschloßen sind. Du könntest dann einen Entfernungssensor auch nur als "schalter" verwenden. Also du musst dir was bauen, damit er bei einer bestimmten entfernugn sagt, hier ist was. Weil die Taster hängen alle an einem Port des Mega8 und anhand der Spannung wird geschaut, welcher Taster gedrückt wurde.

(versteht mich eigentlich jemand, außer denen die es sowieschon wissen? Ich sollte schlafennn zZz zZz . . .)

Andun

shiosai
25.08.2005, 23:22
stimmt auch wieder... ich glaube Hardware basteln ist mir zu kompliziert ;-)

Vogon
25.08.2005, 23:43
versteht mich eigentlich jemand, außer denen die es sowieschon wissen? Ich sollte schlafennn zZz zZz . . .)
Entweder alle Taster so wie sie sind, oder den Analogport für was anderes nehmen. Dann geht aber überhaupt kein Taster mehr.

Naja, ich denke man nimmt den ASURO so wie er ist und lern wie man ein autonomen System progrmmiert, oder man baut sich das alles selber. Es dauert dann halt etwas länger.
(Angeblich kann man auch Autos so benutzen wie sie ab Werk geliefert werden - ohne Spoiler, Tieferlegen und Breitreifen ?)

Andun
26.08.2005, 08:38
werden - ohne Spoiler, Tieferlegen und Breitreifen ?)

Ne, das kannn nicht sein. :D

Naja, also man kann halt schon einzelne Taster entfernen, aber man kann halt auch nur wieder digitale Taster anschließen. Also nur irgendwas was entweder grad geschloßen oder offen ist.

(Wenn ich jetzt völligen Mist schreibe, korrigiert mich, aber so versteh ich die Technik)

Andun

Vogon
26.08.2005, 21:41
Sicher kannst du einzelne Taster entfernen bzw durch andere Kontakte ersetzen. Aber du bekommst dadurch am ASURO keinen Pin für andere Aufgaben frei.

Andun
27.08.2005, 18:46
Hehe. :D Ja, genau. Das habe ich eigentlich auch impliziz gemeint. :D

eli4u
02.12.2006, 16:41
hallo, hab das problem mit den tastern auch , aber weiss jetzt net wie ich
sw=PollSwitch();
PrintInt(sw);
ins ganze programm einfügen kann, könnte mir da einer helfen, dreh langsam durch

EDH
02.12.2006, 16:49
also vieliehct solltest du deine fragestellung ein wenig expliziter forumlierne.
was willst du eigentlöich machen?

willst du ein programm schreiben, das dir die werte der taster aufm terminal ausgiebt?
dann füg einfach in die while schleife
sw=PollSwitch();
PrintInt(sw);

ein. das müsste eigentlich funktionieren


mfg EDH

eli4u
02.12.2006, 17:36
in welche while schleife

EDH
02.12.2006, 19:33
bei den asuro programmen sollte man möglichst immer eine while(1) schleife ans ende schrieben
vgl anleitung

eli4u
02.12.2006, 21:46
Jo scho klar aber wenn ich das Programm so schreibe


#include "asuro.h"
int main(void)
{
Init();


while(1);
unsigned char sw;
sw=PollSwitch();
PrintInt(sw);

return 0;
}


und flash dann passiert nix, also im HyperTerminal wird nichts angezeigt, wenn ich ne taste drücke

EDH
03.12.2006, 08:29
sry wenn ich das jetzt mal so direkt sage. es mangelt dir ein wenig an c kenntnissen.
er hängt in der while schliefe, macht aber nix, weil du
sw=PollSwitch() etc nicht in den anweiungsblock geschrieben hast.



#include "asuro.h"
int main(void)
{
Init();

unsigned char sw;
while(1) {
sw=PollSwitch();
PrintInt(sw);
}
return 0;
}

so müsste das nu funktionierne.

les vieleicht noch mal s.61 in der anleitung durch. da steht das über die schleifen drinne

mfg EDH

damaltor
03.12.2006, 16:32
na wie sieht denn dein "ganzes programm" aus?

eli4u
03.12.2006, 19:47
also , die werte stimme alle bei mir , keine ahnung an was es liegt, aber hab auch a linienfolge programm geschrieben und des läuft ganz normal

damaltor
03.12.2006, 20:16
schau dir mal den letzten geposteten code an... funktioniert der bei dir?

EDH
03.12.2006, 20:50
bei mir geht er

Merew
05.12.2006, 18:38
nur ma son beispiel (hoffe es ist so gemeint^^):



#include "asuro.h"
int sw;
int Main(void){
Init();
while(1){
sw = PollSwitch()
PrintInt(sw);
}}}

nich pöse sein wenn was falsch is... bin ja uch nochn noob^^

damaltor
05.12.2006, 18:56
main sollte kleingeschreiben werden, und du hast eine } zuviel am ende.
ausserdem fehlt zwischen den beiden } noch das return 0;. Hinter PollSwitch() fehlt das Semikolon...

also bleibt folgendes:

#include "asuro.h"
int sw;
int main(void){
Init();
while(1){
sw = PollSwitch();
PrintInt(sw);
}
return 0;
}

das sollte ungefähr gehen dann =)

Merew
05.12.2006, 19:32
hmm werds mir merken... return 0; grgr ich hab nie wirklich was von C gehalten... allerdings ist die ASURO Programmierung mit C einfacher als programme fürn PC zu schreiben xD

EDH
05.12.2006, 19:46
ohh welch grobe sünde.. er verkannte die qualität der programmiersprache C...

ne im ernst..
dann wenn du die schöne asuro lib nicht mher hättest, wärst du froh, wenn du fürn pc ein hello world programm zusammenbrächtest.

ich für meinen teil empfinde das programmieren ampc einfacher als einzenes auslese von ports registern bits und bytest etc

Merew
05.12.2006, 19:57
hello world hab ich schonma hingekriegt... habs aber wieder vergessen... weiss nurnoch das es was mit printline oder so zu tun hatte^^

damaltor
05.12.2006, 20:07
printf() würde für helloworld gut sein... =)

nee c ist kompliziert, korrigiert keine fehler wir überlauf einer variablen oder sowas, und ist eigentlich absolut anfängerUNfreundlich. aber dafür so machtvoll, dass man alles machen kann... aber eben auch alles kaputtmachen kann =)

alternativ gibt es natürlich viele andre sprachen, in denen man den asuro programmieren kann. beispiel sind basic (such mal nach BASCOM), java (es gibt eine java MICRO mashine die auf dem asuro läuft) und jede andere sprache, für die du einen compiler findest... das einzige problem ist, dass man dann natürlich nicht auf vorgebastelte funktionen wir MotorDIR und StatusLED und so weiter zurückgreifen kann, sondern dass man diese alle selbst schreiben muss...

EDH
05.12.2006, 20:13
naja mich für meinen tei lfreut s immer wenn jemand in meinem alter zumindest mal versucht hat mit der programmiererei anzufangen


vorteile von c:
andere programmiersprachen (java etc) oritentieren sich an der syntax von c
linux kerenl ist komplett in c programmiert
[und noch viele mehr]


auserdem ist c immer dann gut wenn man mal seine informatiklehrer ein wenig beeindurcken will. die haben meistens (is bei mior so) von computer etc gar keine ahnung.

Merew
05.12.2006, 20:13
daran hab ich auch schon gedacht^^ mir wäre basic ja wesendlich lieber aber ich machs erstma lieber so wie er sein SOLL^^ d.H. auch die sprache in der ich ihm sage was er zu tun hat^^ viele sagen mit basic kann man nix machen(vergleich bar mit ASURO) von wegen! wir, die GWD, haben etliche spiele mit Basic geschrieben xD kenn mich mit C aber nur SEEEEEEEEEEEEEEEEEEEEEEEEEEEHR beschränkt aus... wie dem auch sei... jetzt sollte man mal back to topic gehen xD

damaltor
05.12.2006, 20:20
also c ist schon geil, man kann 1000 sachen machen. un alle die sagen se könnten damit nix machen, die wissen einfach nciht wie =)

aber natürlich ist es relativ komplex.

meine beiden informatik professoren sind allerdings die ultimativen c-freaks.

Mastermsc
08.12.2006, 23:25
Peace, wie kann ich dem Asuro merken lassen, wie oft ein Taster gedrückt wurde? Möchte z.B drei mal den taster 1 drücken, dann soll er was bestimmtes machen

bye

EDH
09.12.2006, 07:45
du fragst erst die taster ab, wertest das aus, und schreibst das ergebnis in ein arrey
if (status[taster_nummer] == GEDRUECKT) so in der art zumindest.

dann fragst du die taster mit ner while schleife immer weider ab, und schreibst das in ein anderes arrey.

du musst dann arrey 1 mit arrey2 vergeichen. wenn ein unterschied da iost, gab es eine veränderung, die du in irgendeiner variable festhalten kannst.

allerdigns zählt das jetzt drücken und loislassen der taster.

wenn du nur die anzah der drückungen zählen willst, musst du, wenn eine veränderung festgestellt wird, diese erst in einer anderen variable festhalten . wenn diese variable dann 2 ist, inkrementierst du die variable w die anzahl der dürkcungen gespeichert ist.


mfg EDH

Mastermsc
09.12.2006, 12:40
danke für deine hilfe ;)

Robotasuro
25.03.2011, 11:04
Hallo,

Ich habe leider auch ein merkwürdiges Problem, allerdings beim Kompilieren von einem Programm (ASURO). Eigentlich macht das makefile das, was es immer machen sollte, aber immer erscheint eine komische Fehlermeldung:

...

avr-gcc -c -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -IC:/AsuroLib/lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=myProgram.lst myProgram.c -o myProgram.o
avr-gcc -c -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -IC:/AsuroLib/lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=C:/AsuroLib/lib/asuro.lst C:/AsuroLib/lib/asuro.c -o asuro.o
avr-gcc -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -IC:/AsuroLib/lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=myProgram.o myProgram.o asuro.o --output myProgram.elf -Wl,-Map=myProgram.map,--cref -LC:/AsuroLib/lib -lm -lasuro



Das ist bei mir rot geschrieben und ist offensichtlich ein Fehler. Sonst sind aber keine anderen Warnungen oder Errors vorganden..

C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\bin\ld.exe: BFD 2.14 20030612 + coff-avr-patch (20030831) internal error, aborting at ../../bfd/reloc.c line 444 in bfd_get_reloc_size


Am Ende sagt er dann ein Error...


C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\bin\ld.exe: Please report this bug.

make: *** [myProgram.elf] Error 1

> Process Exit Code: 2

Kann mir irgendjemand helfen dabei?
danke im Vorraus
lg ;)

Valen
25.03.2011, 11:57
WinAVR 3.3.1 ist eine alte version. Das macht oft Problemen mit den neuesten Windows Betriebsystemen (Vista/7). Versuch das mall mit den letzte version:

http://sourceforge.net/projects/winavr/files/WinAVR/20100110/

Robotasuro
28.03.2011, 14:39
Ich habe aber noch windows xp! Kann es da mit dem neuen WinAVR zu Problemen kommen?

Valen
29.03.2011, 09:28
Ich habe keine Ahnung was genau geändert ist seit dem Jahren. Aber sicher kann es kein Schade tun die neue zu installieren.

Robotasuro
29.03.2011, 16:37
Gut dann versuche ich es. Also weg mit dem ganzen alten kram und das neue drauf... :D

Robotasuro
29.03.2011, 18:29
Super es klappt ! Danke für deine Hilfe! :)

Robotasuro
30.03.2011, 12:53
hm, aber immer wenn ich jetzt kompiliere, erscheint ein grosses dos-fenster (der bildschirm wird schwarz) und das geht erst nach dem vorgang weg. ich finde das etwas komisch weil das bei der alten version nicht passierte... ist das bei euch auch so? oder ist da noch irgendwo ein fehler?:confused:

Valen
30.03.2011, 12:57
Ja, manchmal öffne ich selbe ein DOS-schirm und gehe nach das richtige Verzeichnis- mit CD Kommandos und starte das Kompilieren selbe mit make all. Dann bleibt auch die Ausgabe noch zu sehen.

Robotasuro
30.03.2011, 14:42
gut dann ist ja alles okay ;D ich dachte schon das waer jetzt schlimm oder so xD aber ich kenn mich auch nicht so wirklich mit dos aus .. danke trotzdem ;)