C für Arduino Anfänger

Gast #3861077
Lesenswert?

Hallo Zusammen,

da ich immer wieder Leuten Mikrocontroller-Einführungskurse gebe, bin 
ich auf eine Idee gekommen:
Im Internet gibt es Online-Compiler für C, wie z.B. diesen hier:
http://codepad.org/

Damit nun ein Anfänger ein wenig C über kann, habe ich gerade eben 
folgendes Framework geschrieben:
1
/*
2
============================================================================
3
Name : arduinoBase
4
Author : ChrisMicro
5
Version :
6
Copyright : GPL license 3
7
Date : 30 October 2014
8
Description : Arduino Simulation Framwork for simple learning of the 
9
Arduino Syntax
10

11
You may use codepad to test your work:
12

13
http://codepad.org/
14

15
============================================================================
16
*/
17

18
#define HIGH 1
19
#define LOW 0
20
#define INPUT 0
21
#define OUTPUT 1
22

23
void pinMode(int pin, int mode)
24
{
25
    printf("Anschluss Nr:%d",pin );
26
    if(mode==INPUT) printf(" auf Eingang setzen");
27
    if(mode==OUTPUT) printf(" auf Ausgang setzen"); 
28
}
29

30
void digitalWrite(int pin, int mode)
31
{
32
    printf("Anschluss Nr:%d",pin );
33
    if(mode==INPUT) printf(" = 0\n\r");
34
    if(mode==OUTPUT) printf(" = 1\n\r"); 
35
}
36
void delay(int d)
37
{
38
  printf("warte %d",d);
39
  printf(" Millisekunden\n\r");
40
}
41

42
/*
43
============================================================================
44
START of ARDUINO CODE
45
============================================================================
46
*/
47

48
// Arduino blink example from
49
// http://arduino.cc/en/tutorial/blink
50

51
int led = 13;
52

53
// the setup routine runs once when you press reset:
54
void setup() {                
55
  // initialize the digital pin as an output.
56
  pinMode(led, OUTPUT);    
57
}
58

59
// the loop routine runs over and over again forever:
60
void loop() {
61
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
62
  delay(1000);               // wait for a second
63
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
64
  delay(1000);               // wait for a second
65
}
66

67

68
/*
69
============================================================================
70
END of ARDUINO CODE
71
============================================================================
72
*/
73
void main()
74
{  
75
  int n;
76
  setup();
77
  for(n=0;n<10;n++) loop();
78

79
  /*
80
  while(1)
81
  { 
82
    loop();
83
  }*/
84

85
}
86
*/
Diesen Code kann man in den Online-Compiler posten und quasi als 
Simulation ausprobieren.

Viel Spaß damit,
chris_
Gast #3861206
Lesenswert?

> ..oder willst Du Banalitäten verkaufen?
Ich nehme an, dass Du noch nie in der Lehre gearbeitet hast.
Dort gibt es manchmal das Problem, dass Software nicht richtig 
installiert ist, oder nicht genügend Geräte vorhanden sind.
Mit einem Online-Compiler kann man das Problem umgehen, da nichts 
installiert werden muss.
Außerdem ist es so, dass sich Anfänger auf das Wesentliche konzentrieren 
müssen, dass heißt sie können den Code oben nicht von alleine tippen, 
sondern sie brauchen ein Template, welches oben gepostet wurde.
Das kann man mit copy und paste in

http://codepad.org/

hinein kopieren und dann laufen lassen.
Gast #3861220
Lesenswert?

>Diesen Code kann man in den Online-Compiler posten und quasi als
>Simulation ausprobieren.

Kann man.
Der sagt:

In function 'main':
Line 74: warning: return type of 'main' is not 'int'
t.c: At top level:
Line 86: error: expected identifier or '(' before '/' token
#3861227
Lesenswert?

Egon schrieb:

> Außerdem ist es so, dass sich Anfänger auf das Wesentliche konzentrieren
> müssen

Schon richtig.
Aber dann sollen sie sich einen echten Arduino nehmen und den 
programmieren.
Das Erlebnis, dass da eine echte LED auch wirklich leuchtet ist schon 
mal die halbe Miete. Das kann einem eine Online-Simulation niemals 
abnehmen. Und bei den paar Euro, die ein Arduino Nachbau kostet, ist das 
auch nicht die Welt. Wer in µC-Programmierung ernsthaft einsteigen will 
und das Lernen will kommt um eine derartige Investition nicht rum.

> dass heißt sie können den Code oben nicht von alleine tippen,
> sondern sie brauchen ein Template, welches oben gepostet wurde.
> Das kann man mit copy und paste in
>
> http://codepad.org/
>
> hinein kopieren und dann laufen lassen.

Schön.
Wobei sich mit der Sinn verschliesst, aus der Arduino Umgebung gerade 
mal 2 Funktionen zu simulieren.

Abgesehen davon sehe ich in dem geposteten Code nichts, was ein Anfänger 
nicht können müsste um überhaupt sinnvoll µC programmieren zu können. Um 
es klipp und klar zu sagen: Wenn das jemand nicht programmieren kann, 
dann kann der Weg nicht sein, ihm eine halbseidene Simulation zu geben, 
sondern dann soll er sich ein C Buch schnappen und erst mal am PC seine 
ersten Programm schreiben. Ist er dann bei Funktionen und Arrays 
angelangt, hat er auch das nötige Rüstzeug, um auf einem Arduino 
(allerdings einem echten) seine ersten Programme zu schreiben.


Nichts für ungut. Ich honoriere die Absicht. Aber so ist das sinnlos.
Gast #3861256
Lesenswert?

>Kann man.
>Der sagt:

>In function 'main':
>Line 74: warning: return type of 'main' is not 'int'
>t.c: At top level:
>Line 86: error: expected identifier or '(' before '/' token

Upps, da sieht man es mal wieder, wie schnell ein kleiner Fehler 
unterläuft.
Das letzte
1
*/

weglassen, dann geht es.
Über den Returnwert von Main lässt sich streiten, aber natürlich ist es 
schöner, wenn kein "warning" ausgeworfen wird, welches einen Anfänger 
verwirren könnte.
Gast #3861290
Lesenswert?

>Du unterrichtest Menschen? Und erzählst denen dann so einen quatsch?
Reg Dich ab.
Das ganze Internet ist voll mit Diskussionen darüber.
Es wird diskutiert.
Es wird gestritten.
Ob die Diskussionen allerdings notwendig sind, steht auf einen anderen 
Blatt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren