altRobots
/robotigs/icons/actuator.pngActuatoren
/robotigs/icons/printboards.pngAlgemeen
/robotigs/icons/chassis.pngChassis
/robotigs/icons/florigs.pngFlorigs
/robotigs/icons/interfacing.gifInterfacing
/robotigs/icons/microphone_icon.pngMuziek
/robotigs/icons/musicKey_icon.pngMuzikanten
/robotigs/icons/shield.pngSchildjes
/sys/icons/sensors.pngSensors
/robotigs/icons/languages.pngTalen
/robotigs/icons/battery.pngVoedingen
/sys/icons/microController.pngµControllers
altContact
In System Programmering"); echo ("  "); } ?>  "); /* echo (""); echo (" "); //Show pencil as button */ ?> alt  

Deze pagina is verouderd. Ga naar de vernieuwde pagina.

"); $counter = 0; $aantal = str_word_count($pict_list, 0, "0123456789"); $lijst = str_word_count($pict_list, 1, "0123456789"); while($counter < $aantal){ $pictkey = $lijst[$counter]; $qryy1 = ("SELECT * FROM illustrations WHERE ill_id = $pictkey ;"); $resulty1 = pg_query($con1, $qryy1); while($row = pg_fetch_array($resulty1)){ //Fields accesible by their name foreach( $row AS $key => $val ){ $$key = stripslashes( $val ); } } $image = ("/robotigs/documentatie/plaatjes/$ill_name"); $pictfull = str_replace('_small', '', $image); //Pictfull=biggest version $alt = ("Just wait till your 57...."); $txtname = get_txt($con1, 18, $koekje[2], $ill_id); //Robot illustrations subtitles echo (""); echo (''. $alt .'
'); $nummer = $counter + 1; $txtAfb = get_txt($con1, 9, $koekje[2], 3865); //Pic Afb if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates echo ("$txtAfb $nummer: "); echo ("$txtname"); echo ("
"); echo ("Ontkoppelen "); if ($counter==0){ echo ("Up "); }else{ echo ("Up "); } if ($nummer == $aantal){ echo ("Down"); }else{ echo ("Down"); } }else{ //Else of if Meaning the current useer is logged in echo ("$txtAfb $nummer: $txtname"); } echo ('

'); //End of this picture $counter++; //Prepair for next picture } echo (''); //All pictures are printed } //End of if there are 1 or more pictures to be printed ---------------------- ?>

In System Programming (Wiki). betekent dat µcontrollers in de schakeling kunnen worden geprogrammeerd. Dit is voor roboteers een ideale uitvinding. Het is vooral gemakkelijk voor testen of updaten van de software.
  • Communicatieproblemen
    • Linux Arduino USB Port
    • De Arduino wordt geprogrammeerd met een USB kabel. De USB poort heet ACM01 or ttyUSB etc. Deze poorten zijn allemaal lid van de groep dialout. Deze groep heeft alle benodigde rechten om onder Linux deze poort te mogen gebruiken. Dus maak iedereen die een Arduino wil programmeren lid van deze groep met:
      sudo adduser $USER dialout.
      sudo usermod -a -G dialout loginname.
      Een reboot is nodig.
    • Linux Arduino USB Port 2
    • De USB poort is ineens niet meer zichtbaar bij het programmeren van Boldermin. Onder Windows is de robot wel degelijk bereikbaar onder COM3.
      Ubuntu Arduino USB port invisible

/robotigs/documentatie/plaatjes/eis1.jpg
WAARSCHUWING
Als alles goed gaat kunt u straks uw µcontroller programmeren. Tot nu toe heeft u nog weinig kansen gehad om µcontrollers te slopen, behalve dan dat u ze in verkeerde voetjes heeft gestoken, of met het nokje naar de verkeerde kant. Dat gaat nu veranderen. Tijdens het programmeren heeft u de mogelijkheid om met 1 druk op de knop een controller definitief onbruikbaar maken. Vandaar de uitdrukkelijke waarschuwing om tijdens het programmeren niets te doen waarvan u niet zeker weet dat u het moet doen. Ga hier niet lukraak iets zitten proberen en zeker niet met de Fuses en Lock Bits. U bent gewaarschuwd.

Allereerst dient u een verbinding te maken tussen u PC en de µcontroller. Aan de PC-kant kunt u naar keuze via een USB poort, parallele poort of een seriële poort gebruiken om het programma op de controller zetten. Aan de kant van de controller wordt een 10-pins bandkabel aansluiting gebruikt. Het is verstandig om met de 10-pins connector compatibel te blijven met andere hardware, zoals bijvoorbeeld de STK500. Afhankelijk van de door u gekozen oplossing heeft u ook software voor uw PC nodig die om kan gaan met uw programmer. Dit soort software gaat er vanuit dat u een kant en klaar Intel *.hex beschikbaar heeft dat u wil uploaden naar uw controller. Het zal op de controller eerst het oude programma verwijderen, vervolgens het nieuwe er op schrijven en tenslotte controleren of alles er correct is opgeschreven. Dit alles is een kwestie van slechts enkele seconden.

  • USB
    /robotigs/documentatie/plaatjes/usb_programmer_schema.png Een USB programmer kan kant en klaar worden gekocht voor ong. €30,-. Er bestaat een duitstalige website met een simpele zelfbouw schakeling met 1 ATmega8, kosten ong €10,- (Afb. 1). Er is een apart document voor het zelfbouwen van deze USB-programmer. Een nadeel van zelfbouwen is dat er een programmer nodig is om de USB programmer te programmeren. Indien u wel zelf kunt solderen, maar nog geen programmer heeft, kunt u dit probleem omzeilen door een zelfbouwkit met voorgeprogrammeerde controller te kopen voor ong. €20,-. Voor zowel Linux als ook Windows is het programma om nieuwe software te uploaden met deze USB programmer AVRdude (manual).
  • Parallel (verouderd)
    /robotigs/documentatie/plaatjes/parallel_programmer_schema.png De zelfbouw AVR programmer voor een printerpoort is makkelijk en goedkoop. De parallelle stekker is groot genoeg om ook alle benodigde electronica te bevatten (Afb. 2). Er wordt in de schakeling ook nog een optioneel ledje beschreven, maar dat gebruik ik niet. Het enige probleem is dat de nieuwste computers vaak geen printerpoort meer hebben. Om het programma via deze kabel op uw µcontroller te krijgen gebruik ik onder Windows PonyProg. Dit programma is gratis te downloaden en er bestaat ook een Linux versie van. Op de PC moet de instelling van de paralelle poort in ieder geval beter zijn dan standaard. Ik gebruik de EEP/ECP setting. Dan verloopt het programmeren met Ponyprog vlekkeloos.
  • Seriëel (verouderd)
    De hardware is iets gecompliceerder dan de paralelle uitvoering, maar ook goed te doen. Het probleem zit hem in goede drivers, zeker onder Windows XP en beter. Verder is ook hier het probleem dat nieuwe computers vaak geen seriele poort meer hebben. Dit is eventueel nog te omzeilen door een USB <-> Serieel adapterkabeltje te gebruiken, maar dat lost het driver probleem niet op. Om het programma via deze kabel op uw µcontroller te krijgen gebruik ik onder Windows PonyProg.
  • STK500
    /robotigs/documentatie/plaatjes/stk500.jpg Indien u een STK500 heeft, dan heeft u ook gelijk een seriële In System Programmer. Het nokje van de 10-polige connector dient aan de buitenkant te worden aangesloten. Vergeet echter niet om VTARGET te verwijderen. Een betere manier is overigens om bij al uw ontwerpen er rekening mee te houden dat de programmer nooit gevoed mag worden vanaf de doelcontroller. Oftewel dat VTG nooit aangesloten mag zijn in de ISP programmeerconnector op het ontvangende systeem. De pin layout van de ISP programmeer uitgangen op de STK500 is standaard. Op de STK500 is de VTG onder andere verbonden met de VTARGET. Indien U nu zelf een voeding op VTG zou aanbieden, dan zal dit met zekerheid tot beschadiging van de gestabilliseerde voedings op de STK500 leiden. Dit kan worden voorkomen door VTARGET te verwijderen. Maar deze staat aan als u een controller op de STK500 wilt programmeren. Dit zal volgens Murphy vroeg of laat tot beschadiging van de STK500 leiden. Dit geldt overigens niet enkel voor de STK500 maar ook voor diverse andere programmers. Sluit daarom in uw ontwerpen de ISP programma ontvangende connector nooit aan op VTG. Dan kan de STK500 niet beschadigen. Er is overigens ook geen zinnige reden waarom U VTG wel zou aansluiten, tenzij u uw ontwerp bewust vanuit de STK500 wil voeden. U heeft geen extra software nodig indien u met AVR-GCC werkt. Als ik de STK500 uitsluitend als programmer wil gebruiken dan dient het nokje van de programmeerkabel naar buiten te zijn gericht. Om het programma via deze kabel op uw µcontroller te krijgen gebruik ik onder Windows AVR studio.
/robotigs/documentatie/plaatjes/usb_programmer.jpg
Dit voorbeeld heeft betrekking op de STK500 en AVR Studio. Op het tabblad Program dient u onder het kopje Flash het door u gemaakte *.hex bestand te selecteren. Vervolgens kunt u op de button Program drukken. Als alles klopt zal nu de Led op de STK500 gaan knipperen en heeft u uw eerste programma op een controller geschreven. Na het ontvangen van een programma zal een µcontroller altijd automatisch rebooten. Kortom uw systeem is "up and running". Na een klein feestje wordt het nu tijd voor een iets serieuzere toepassing.

$val ){ $$key = stripslashes( $val ); } $jaar = substr($changeddate,0,4); $maand = substr($changeddate,5,2); $dag = substr($changeddate,8,2); $lastupdate = ("$jaar $maand $dag"); $prtsrttxt = get_txt($con1, 26, 1, $idsrtodd); $jaar = substr($createddate,0,4); $maand = substr($createddate,5,2); $dag = substr($createddate,8,2); $create_stamp = ("$dag $maand $jaar"); //GENERAL INFO FOR EVERY USER ************************************************** echo ("

"); echo (""); if ($codetext) { //Code like KY-026 or NA-41 echo (""); } //End of if ($codetext) $tmp = get_txt($con1, 9, $koekje[2], 3741); //Fieldname at screen if ($prijseurinclbtw > 0){ //Show price indication $prijs_formatted = number_format($prijseurinclbtw / 100, 2, ',', '.'); echo (""); echo (""); } //End of if ($prijseurinclbtw > 0) if ($sketchtext) { //Link to OWN SOFTWARE $tmp = get_txt($con1, 9, $koekje[2], 3738); //Fieldname at screen echo (""); } //End of if ($sketchtext) $tmp = get_txt($con1, 9, $koekje[2], 3744); //Fieldname at screen if ($pinouttext) { //Pinout echo (""); } $tmp = get_txt($con1, 9, 1, 3735); //Fieldname at screen $tmp2 = get_txt($con1, 26, 1, $row4[16]); //Group name in its language echo (""); if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates $tmp = get_txt($con1, 9, $koekje[2], 3918); //Fieldname at screen LANGUAGE if ($row4[26] == 1) {$imgname = "nederland.png";} if ($row4[26] == 2) {$imgname = "deutschland.png";} if ($row4[26] == 3) {$imgname = "uk.png";} if ($row4[26] == 4) {$imgname = "france.png";} echo (""); $tmp = get_txt($con1, 9, $row4[27], 3919); //Fieldname at screen $statuskey = get_status_key($con1, $status); $tmp2 = get_txt($con1, 61, $koekje[2], $statuskey); //Fieldname at screen echo (""); } $tmp = get_txt($con1, 9, 1, 3966); //Fieldname at screen echo (""); echo ("
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3923); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates echo (" (edit)"); } echo ("Algemene informatie test
"); $tmp = get_txt($con1, 9, $koekje[2], 3739); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //Class for colour }else{ //So you are not allowed to translate echo $tmp; //Show screenname of this field in user language } //End of If you want to translate this fieldname at screen echo (" "); if ($codelink) { echo ("$codetext"); }else{ echo ("$codetext"); } //End of if ($pinoutlink) echo ("
$tmp  "); if ($urlprijs){ echo ("€  $prijs_formatted"); }else{ echo ("€  $prijs_formatted"); } //End of if ($urlprijs > "") echo ("
$tmp  "); if ($sketchlink) { echo ("$sketchtext"); }else{ echo ("$sketchtext"); } //End of if ($sketchlink) echo ("
$tmp  "); if ($pinoutlink) { echo ("$pinouttext"); }else{ echo ("$pinouttext"); } //End of if ($pinoutlink) echo ("
$tmp  "); //MENU GROUP echo (""); echo ("$tmp2
$tmp"); echo ("flag.gif"); echo ("
$tmp  "); //STATUS echo ("$status $tmp2
$tmp  "); //LAST CHANGED $tmp = substr($changeddate, 0, 10); echo ("$tmp

"); return; //////////////////////////////////////////////////////////////////////////////// function get_status_key($con, $num){ $qry = ("SELECT id FROM status WHERE nr = $num ;"); $result = pg_query($con, $qry); $row = pg_fetch_array($result); return ("$row[0]"); } 0 AND software.rstid = 2 AND tblsystext.lanid = $koekje[2] AND tblsystext.txlid = 19 ORDER BY sftname ASC , controller ASC ;"); $result = pg_query($con1, $qry2); if (pg_num_rows($result)>0) { //Only if at least 1 program exists echo ('

'); echo (""); while($col = pg_fetch_array($result)){ $col[0] = ("$col[0]"); echo (""); echo (""); echo (""); if ($koekje[0] > 0 and $koekje[3]>0){ //User is logged in and translates echo (""); } echo (''); } echo ('
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3922); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate echo ("
$col[2]  $col[0]"); echo ("(Edit)
'); } ?> 0){ if ($header == 0) { echo ("

"); echo (""); $header++; } //End of if ($header == 0) echo (""); echo (""); } } if ($header > 0){ echo ("
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3879); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate echo ("
$colbpp[2]"); //Show software van deze bot $qry=("SELECT software_basedir FROM farmbotversie WHERE id = $colbpp[0];"); $result = pg_query($con1, $qry); $col = pg_fetch_array ($result ,0); $dir1 = "/var/www/html/robotigs/software/$col[0]"; $arr1 = glob($dir1, GLOB_ONLYDIR); if (isset($arr1[0])){ $folder = $arr1[0]; $countertmp = 0; echo ("
    "); foreach (scandir($folder, 1) as $filename) { if ($filename<>"." AND $filename <>".."){ if ($countertmp == 0){ $countertmp++; } //End of if ($countertmp == 0) $tmp = "/"; $dir = substr($folder, 14) ."/"; $link = $tmp .$dir .$filename; $showname = substr($filename, 0 ,-4); echo ("
  • "); echo "$showname"; echo ("
  • "); } //End of if ($filename<>"." AND $filename <>".."){ } //End of foreach (scandir($folder, 1) as $filename) echo ("
      "); } //End of if (isset($arr1[0])) echo ("
"); } ?>
Warning: include(/var/www/html/robotigs/includes/wishlistperpart.php): Failed to open stream: No such file or directory in /var/www/html/robotigs/includes/parts_header.php on line 128

Warning: include(): Failed opening '/var/www/html/robotigs/includes/wishlistperpart.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/robotigs/includes/parts_header.php on line 128