ATTiny85 schreibt nicht, wenn zwei Zeilen aktiv sind

Wenn eine oder beide der zwei Zeilen, die ausgeklammerten sind, mit hochgeladen werden passiert nichts mehr. Ohne die Zeilen geht alles. Ich habe auch schon versucht, die Zeilen aufzuteilen, das hat aber auch nicht funktioniert. Wenn jemand weiß, wodran das liegen könnte, würde ich mich über eine Antwort freuen.

Das ist der ganze Code:

#include "DigiKeyboard.h"

void setup() {
  pinMode(1, OUTPUT);
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.print("$MyWallpaper=\"C:\\wallpaper.jpg\"");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("$code = @'");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("using System.Runtime.InteropServices;");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("namespace Win32{");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("     public class Wallpaper{");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("        [DllImport(\"user32.dll\", CharSet=CharSet.Auto)]");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("  staticexternintSystemParametersInfo(intuAction,intuParam,stringlpvParam , int fuWinIni) ;");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("         public static void SetWallpaper(string thePath){");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  **DigiKeyboard.print("            SystemParametersInfo(20,0,3);");**
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("         }");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("    }");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print(" }");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("'@");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("add-type $code");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  **DigiKeyboard.print("[Win32.Wallpaper]::SetWallpaper($MyWallpaper)");**
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.print("");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  digitalWrite(1, HIGH);
  for(;;){}
}

DigiKeyboard.print("text") kopiert den Text zuerst ins RAM und dann ans DigiKeyboard. Somit wird schnell das RAM voll und blockiert darum.
Benutze das F() Makro:
DigiKeyboard.print(F("text"));

Grüße Uwe

2 Likes

Danke für die Hilfe,
der Code geht jetzt einwandfrei.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.