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
C AVR-GCC"); 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 ---------------------- ?>

C is een programmeertaal die uitermate geschikt is om robots te programmeren. Het is duidelijk langzamer dan assembler en de programma`s zijn aanzienlijk groter maar daarentegen is C in bijna alle opzichten makkelijker en meer compatible. Probeer zelf maar eens een wortel te trekken in assembler. In C is dat geen enkel probleem want het is reeds opgelost door grootste wiskundigen wereld. Verder bestaan er bibliotheken die u kunt downloaden waarin vele zaken reeds zijn voorgeprogrammeerd. Gebruik daarom in de praktijk altijd C en enkel assembler als dat strikt noodzakelijk is. Een nadeel van C is dat de leercurve vrij steil is, maar hij is het waard. Met de volgende beschrijving beschikt u over een compleet ontwikkelsysteem dat specifiek voor Atmel AVR µcontrollers opgezet is.

WINDOWS INSTALLATIE

  1. Installeer WinAVR
    Er bestaan vele zaken die specifiek zijn voor Atmel µcontrollers. WinAVR heeft vele extra routines. Downloaden en installeren. Hiermee wordt automatisch de GCC toolchain geïnstalleerd.
  2. Installeer Eclipse IDE
    Eclipse is een java programma dat niet alleen als editor kan worden gebruikt. Het is een IDE oftewel een raamwerk waarbinnen andere programma`s hun werk kunnen doen. Het wordt gebruikt om in diverse talen te programmeren en bovendien kent het een CVS waardoor er met meerdere gebruikers tegelijk aan 1 project kan worden gewerkt. Omdat Eclipse een Java programma is zult u eerst een zogenaamde JRE moeten installeren. Download de C/C++ IDE versie. Na unzippen kunt u de eclipse.exe gewoon gebruiken. `Kijk op Android naar de App AIDE. Windows 8.2: Installatie:
  3. Installeer AVR-Eclipse
    AVR-Eclipse is een bibliotheek specifiek is voor Atmel µcontrollers. Dit kan vanuit Eclipse door Help /  Install new software te starten. Add bij work with: een nieuwe site: http://avr-eclipse.sourceforge.net/updatesite/ met als naam AVR Eclipse.

LINUX INSTALLATIE

  1. Installeer AVR GCC Toolchain
    De AVR GCC Toolchain bevat een serie programmas die ideaal bij elkaar en bij de de AVR microprocessoren passen. Voor meer informatie kunt u kijken op:  The_AVR_GCC_Toolchain of Zie deze Linux handleiding.  Doe in een Ubuntu terminal: sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude
  2. Installeer Eclipse editor
    Eclipse is een java programma dat niet alleen als editor kan worden gebruikt. Het is een IDE oftewel een raamwerk waarbinnen andere programma`s hun werk kunnen doen. Onder Ubuntu kan het worden geïnstalleerd via het Ubuntu softwarecentrum. Het wordt gebruikt om in diverse talen te programmeren en bovendien kent het een CVS waardoor er met meerdere gebruikers tegelijk aan 1 project kan worden gewerkt.
  3. Installeer CDT plugin
    CDT is een plugin en vanuit Eclipse te installeren. CDT is de plugin waarmee het mogelijk wordt om C programma`s te schrijven in Eclipse. Het werkt na een uitpakken wel direct, maar dan moet Eclipse worden gestart vanuit Downloads. is ook niet helemaal de bedoeling. Uitzoeken!
  4. Installeer AVR-Eclipse
    AVR-Eclipse is een bibliotheek specifiek is voor Atmel µcontrollers. Dit kan vanuit Eclipse door Help /  Install new software te starten. Add bij work with: een nieuwe site: http://avr-eclipse.sourceforge.net/updatesite/ met als naam AVR Eclipse.

Nu beschikt u over een systeem om programma`s voor robots te kunnen schrijven in C. U kunt eventueel ook nog AVRlib installeren. Deze Procyon AVRlib bibliotheek bevat enkele complete routines en voorbeelden voor Atmel µcontrollers, maar dit is zeker niet noodzakelijk.

Ik gebruik zelf een centrale CVS server om de geschreven programma`s op te slaan. Zo kan ik vanaf iedere locatie met elk OS werken aan de software. Ook kunnen er meerdere mensen tegelijk aan 1 project werken en loopt alles mee in de automatische backup. Maar dit maakt de zaken wel gecompliceerder en dit is normaalgesproken niet nodig. Daarom wordt dit in een apart document behandeld.
 

Documentatie

Omschrijving

cprogramming.com Introductie in C met tutorials
www.delorie.com Makefiles explained
GNU GCC algemene opties Compiler opties
AVR GCC specifieke opties
aps.an.gov The C Preprocessor
cs.cf.ac.uk UNIX System Calls and Subroutines using C.
acm.uiuc.edu C reference guide
Procyon Lijstje met alle modules.
umanitoba Eclipse Project CDT (C/C++) Plugin Tutorial
learn-c.com Introductie in C met tutorials
cplus.about.com Introductie in C met tutorials
howstuffworks.com Introductie in C met tutorials
www.mikrocontroller.net AVR-GCC tutorial (duits)

 De volgende stap betreft het opzetten van een eerste project, oftewel een zogenaamd "Hello World" project.

 


$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