<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://wikiskola.se/index.php?action=history&amp;feed=atom&amp;title=Access_Point-kod_till_Vovve</id>
	<title>Access Point-kod till Vovve - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://wikiskola.se/index.php?action=history&amp;feed=atom&amp;title=Access_Point-kod_till_Vovve"/>
	<link rel="alternate" type="text/html" href="https://wikiskola.se/index.php?title=Access_Point-kod_till_Vovve&amp;action=history"/>
	<updated>2026-05-12T04:37:20Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wikiskola.se/index.php?title=Access_Point-kod_till_Vovve&amp;diff=50933&amp;oldid=prev</id>
		<title>Hakan: Skapade sidan med &#039;&lt;pre&gt; // Load Wi-Fi library #include &lt;WiFi.h&gt;  //Vill ha en indikerande diod #define LED_PIN 13  // You can customize the SSID name and change the password const char* ssid...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wikiskola.se/index.php?title=Access_Point-kod_till_Vovve&amp;diff=50933&amp;oldid=prev"/>
		<updated>2019-04-26T11:44:20Z</updated>

		<summary type="html">&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; // Load Wi-Fi library #include &amp;lt;WiFi.h&amp;gt;  //Vill ha en indikerande diod #define LED_PIN 13  // You can customize the SSID name and change the password const char* ssid...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
// Load Wi-Fi library&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Vill ha en indikerande diod&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
&lt;br /&gt;
// You can customize the SSID name and change the password&lt;br /&gt;
const char* ssid     = &amp;quot;Ge namn till ditt nätverk&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;Sätt ett password till ditt nätverk&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set web server port number to 80&lt;br /&gt;
WiFiServer server(80);&lt;br /&gt;
&lt;br /&gt;
// Variable to store the HTTP request&lt;br /&gt;
String header;&lt;br /&gt;
&lt;br /&gt;
// Motor 1&lt;br /&gt;
int motor1Pin1 = 27; &lt;br /&gt;
int motor1Pin2 = 15; &lt;br /&gt;
int enable1Pin = 14; &lt;br /&gt;
&lt;br /&gt;
// Motor 2&lt;br /&gt;
int motor2Pin1 = 33; &lt;br /&gt;
int motor2Pin2 = 12; &lt;br /&gt;
int enable2Pin = 32;&lt;br /&gt;
&lt;br /&gt;
// Setting PWM properties&lt;br /&gt;
const int freq = 30000;&lt;br /&gt;
const int pwmChannel = 0;&lt;br /&gt;
const int resolution = 8;&lt;br /&gt;
int dutyCycle = 0;&lt;br /&gt;
&lt;br /&gt;
// Decode HTTP GET value&lt;br /&gt;
String valueString = &amp;quot;0&amp;quot;;&lt;br /&gt;
int pos1 = 0;&lt;br /&gt;
int pos2 = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pinMode(LED_PIN, OUTPUT);&lt;br /&gt;
  &lt;br /&gt;
  // Set the Motor pins as outputs&lt;br /&gt;
  pinMode(motor1Pin1, OUTPUT);&lt;br /&gt;
  pinMode(motor1Pin2, OUTPUT);&lt;br /&gt;
  pinMode(motor2Pin1, OUTPUT);&lt;br /&gt;
  pinMode(motor2Pin2, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  // Set all pins to be off&lt;br /&gt;
  digitalWrite(motor1Pin1, LOW);&lt;br /&gt;
  digitalWrite(motor1Pin2, LOW);&lt;br /&gt;
  digitalWrite(motor2Pin1, LOW);&lt;br /&gt;
  digitalWrite(motor2Pin2, LOW);&lt;br /&gt;
  &lt;br /&gt;
  // Configure PWM channel functionalitites&lt;br /&gt;
  ledcSetup(pwmChannel, freq, resolution);&lt;br /&gt;
  &lt;br /&gt;
  // Attach the PWM channel 0 to the enable pins which are the GPIOs to be controlled&lt;br /&gt;
  ledcAttachPin(enable1Pin, pwmChannel);&lt;br /&gt;
  ledcAttachPin(enable2Pin, pwmChannel); &lt;br /&gt;
&lt;br /&gt;
  // Produce a PWM signal to both enable pins with a duty cycle 0&lt;br /&gt;
  ledcWrite(pwmChannel, dutyCycle);&lt;br /&gt;
  &lt;br /&gt;
  // Connect to Wi-Fi network with SSID and password&lt;br /&gt;
  Serial.print(&amp;quot;Setting AP (Access Point)...&amp;quot;);&lt;br /&gt;
  // Remove the password parameter, if you want the AP (Access Point) to be open&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  &lt;br /&gt;
  IPAddress IP = WiFi.softAPIP();&lt;br /&gt;
  Serial.print(&amp;quot;AP IP address: &amp;quot;);&lt;br /&gt;
  Serial.println(IP);&lt;br /&gt;
  digitalWrite(LED_PIN, HIGH);&lt;br /&gt;
  &lt;br /&gt;
  server.begin();&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(){&lt;br /&gt;
  WiFiClient client = server.available();   // Listen for incoming clients&lt;br /&gt;
&lt;br /&gt;
  if (client) {                             // If a new client connects,&lt;br /&gt;
    Serial.println(&amp;quot;New Client.&amp;quot;);          // print a message out in the serial port&lt;br /&gt;
    String currentLine = &amp;quot;&amp;quot;;                // make a String to hold incoming data from the client&lt;br /&gt;
    while (client.connected()) {            // loop while the client&amp;#039;s connected&lt;br /&gt;
      if (client.available()) {             // if there&amp;#039;s bytes to read from the client,&lt;br /&gt;
        char c = client.read();             // read a byte, then&lt;br /&gt;
        Serial.write(c);                    // print it out the serial monitor&lt;br /&gt;
        header += c;&lt;br /&gt;
        if (c == &amp;#039;\n&amp;#039;) {                    // if the byte is a newline character&lt;br /&gt;
          // if the current line is blank, you got two newline characters in a row.&lt;br /&gt;
          // that&amp;#039;s the end of the client HTTP request, so send a response:&lt;br /&gt;
          if (currentLine.length() == 0) {&lt;br /&gt;
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)&lt;br /&gt;
            // and a content-type so the client knows what&amp;#039;s coming, then a blank line:&lt;br /&gt;
            client.println(&amp;quot;HTTP/1.1 200 OK&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;Content-type:text/html&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;Connection: close&amp;quot;);&lt;br /&gt;
            client.println();&lt;br /&gt;
            &lt;br /&gt;
            // turns the GPIOs on and off&lt;br /&gt;
            // change LOW and HIGH to get the buttons working correctly with your robot&lt;br /&gt;
            if (header.indexOf(&amp;quot;GET /forward&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
              Serial.println(&amp;quot;Forward&amp;quot;);&lt;br /&gt;
              digitalWrite(motor1Pin1, LOW);&lt;br /&gt;
              digitalWrite(motor1Pin2, HIGH); &lt;br /&gt;
              digitalWrite(motor2Pin1, LOW);&lt;br /&gt;
              digitalWrite(motor2Pin2, HIGH);&lt;br /&gt;
            }  else if (header.indexOf(&amp;quot;GET /left&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
              Serial.println(&amp;quot;Left&amp;quot;);&lt;br /&gt;
              digitalWrite(motor1Pin1, LOW); &lt;br /&gt;
              digitalWrite(motor1Pin2, LOW); &lt;br /&gt;
              digitalWrite(motor2Pin1, LOW);&lt;br /&gt;
              digitalWrite(motor2Pin2, HIGH);&lt;br /&gt;
            }  else if (header.indexOf(&amp;quot;GET /stop&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
              Serial.println(&amp;quot;Stop&amp;quot;);&lt;br /&gt;
              digitalWrite(motor1Pin1, LOW); &lt;br /&gt;
              digitalWrite(motor1Pin2, LOW); &lt;br /&gt;
              digitalWrite(motor2Pin1, LOW);&lt;br /&gt;
              digitalWrite(motor2Pin2, LOW);             &lt;br /&gt;
            } else if (header.indexOf(&amp;quot;GET /right&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
              Serial.println(&amp;quot;Right&amp;quot;);&lt;br /&gt;
              digitalWrite(motor1Pin1, LOW); &lt;br /&gt;
              digitalWrite(motor1Pin2, HIGH); &lt;br /&gt;
              digitalWrite(motor2Pin1, LOW);&lt;br /&gt;
              digitalWrite(motor2Pin2, LOW);    &lt;br /&gt;
            } else if (header.indexOf(&amp;quot;GET /reverse&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
              Serial.println(&amp;quot;Reverse&amp;quot;);&lt;br /&gt;
              digitalWrite(motor1Pin1, HIGH);&lt;br /&gt;
              digitalWrite(motor1Pin2, LOW); &lt;br /&gt;
              digitalWrite(motor2Pin1, HIGH);&lt;br /&gt;
              digitalWrite(motor2Pin2, LOW);          &lt;br /&gt;
            }&lt;br /&gt;
            // Display the HTML web page&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;&amp;lt;html&amp;gt;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;head&amp;gt;&amp;lt;meta name=\&amp;quot;viewport\&amp;quot; content=\&amp;quot;width=device-width, initial-scale=1\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;link rel=\&amp;quot;icon\&amp;quot; href=\&amp;quot;data:,\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
            // CSS to style the buttons &lt;br /&gt;
            // Feel free to change the background-color and font-size attributes to fit your preferences&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;style&amp;gt;html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;.button { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-color: #4CAF50;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;border: none; color: white; padding: 12px 28px; text-decoration: none; font-size: 26px; margin: 1px; cursor: pointer;}&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;.button2 {background-color: #555555;}&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            // Web Page        &lt;br /&gt;
            client.println(&amp;quot;&amp;lt;p&amp;gt;&amp;lt;a href=\&amp;quot;/forward\&amp;quot;&amp;gt;&amp;lt;button class=\&amp;quot;button\&amp;quot; onclick=\&amp;quot;moveForward()\&amp;quot;&amp;gt;FORWARD&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;div style=\&amp;quot;clear: both;\&amp;quot;&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href=\&amp;quot;/left\&amp;quot;&amp;gt;&amp;lt;button class=\&amp;quot;button\&amp;quot; onclick=\&amp;quot;moveLeft()\&amp;quot;&amp;gt;LEFT &amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;a href=\&amp;quot;/stop\&amp;quot;&amp;gt;&amp;lt;button class=\&amp;quot;button button2\&amp;quot; onclick=\&amp;quot;stopRobot()\&amp;quot;&amp;gt;STOP&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;a href=\&amp;quot;/right\&amp;quot;&amp;gt;&amp;lt;button class=\&amp;quot;button\&amp;quot; onclick=\&amp;quot;moveRight()\&amp;quot;&amp;gt;RIGHT&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;p&amp;gt;&amp;lt;a href=\&amp;quot;/reverse\&amp;quot;&amp;gt;&amp;lt;button class=\&amp;quot;button\&amp;quot; onclick=\&amp;quot;moveReverse()\&amp;quot;&amp;gt;REVERSE&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;);        &lt;br /&gt;
            client.println(&amp;quot;&amp;lt;input type=\&amp;quot;range\&amp;quot; min=\&amp;quot;0\&amp;quot; max=\&amp;quot;100\&amp;quot; step=\&amp;quot;25\&amp;quot; id=\&amp;quot;motorSlider\&amp;quot; onchange=\&amp;quot;motorSpeed(this.value)\&amp;quot; value=\&amp;quot;&amp;quot; + valueString + &amp;quot;\&amp;quot;/&amp;gt;&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            client.println(&amp;quot;&amp;lt;script&amp;gt; function motorSpeed(pos) { &amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;var xhr = new XMLHttpRequest();&amp;quot;); &lt;br /&gt;
            client.println(&amp;quot;xhr.open(&amp;#039;GET&amp;#039;, \&amp;quot;/?value=\&amp;quot; + pos + \&amp;quot;&amp;amp;\&amp;quot;, true);&amp;quot;); &lt;br /&gt;
            client.println(&amp;quot;xhr.send(); } &amp;lt;/script&amp;gt;&amp;quot;);&lt;br /&gt;
           &lt;br /&gt;
            client.println(&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            //Request example: GET /?value=100&amp;amp; HTTP/1.1 - sets PWM duty cycle to 100&lt;br /&gt;
            if(header.indexOf(&amp;quot;GET /?value=&amp;quot;)&amp;gt;=0) {&lt;br /&gt;
              pos1 = header.indexOf(&amp;#039;=&amp;#039;);&lt;br /&gt;
              pos2 = header.indexOf(&amp;#039;&amp;amp;&amp;#039;);&lt;br /&gt;
              valueString = header.substring(pos1+1, pos2);&lt;br /&gt;
              //Set motor speed value&lt;br /&gt;
              if (valueString == &amp;quot;0&amp;quot;) {&lt;br /&gt;
                ledcWrite(pwmChannel, 0);&lt;br /&gt;
                digitalWrite(motor1Pin1, LOW); &lt;br /&gt;
                digitalWrite(motor1Pin2, LOW); &lt;br /&gt;
                digitalWrite(motor2Pin1, LOW);&lt;br /&gt;
                digitalWrite(motor2Pin2, LOW);   &lt;br /&gt;
              }&lt;br /&gt;
              else { &lt;br /&gt;
                dutyCycle = map(valueString.toInt(), 25, 100, 200, 255);&lt;br /&gt;
                ledcWrite(pwmChannel, dutyCycle);&lt;br /&gt;
                Serial.println(valueString);&lt;br /&gt;
              } &lt;br /&gt;
            }         &lt;br /&gt;
            // The HTTP response ends with another blank line&lt;br /&gt;
            client.println();&lt;br /&gt;
            // Break out of the while loop&lt;br /&gt;
            break;&lt;br /&gt;
          } else { // if you got a newline, then clear currentLine&lt;br /&gt;
            currentLine = &amp;quot;&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
        } else if (c != &amp;#039;\r&amp;#039;) {  // if you got anything else but a carriage return character,&lt;br /&gt;
          currentLine += c;      // add it to the end of the currentLine&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Clear the header variable&lt;br /&gt;
    header = &amp;quot;&amp;quot;;&lt;br /&gt;
    // Close the connection&lt;br /&gt;
    client.stop();&lt;br /&gt;
    Serial.println(&amp;quot;Client disconnected.&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hakan</name></author>
	</entry>
</feed>