logo

sabato 20 ottobre 2012

Esecuzione di applicazioni ASP.NET in Ubuntu con ModMono


ModMono è un modulo Apache che fornisce il supporto per ASP.NET web server Apache. Useremo Apache come alternativa per IIS di Microsoft in Windows.
Parte uno: installazione di
Per ModMono di lavorare per prima cosa dovete installare Apache. È possibile fare clic qui per istruzioni su come installare Apache. Se avete già installato Apache, è possibile saltare questo passaggio.
Dopo di che, installare ModMono eseguendo il comando seguente (una riga). Verrà installato ModMono con il supporto per ASP.NET 2.0
sudo apt-get install libapache2-mod-mono mono-apache-server2
Una volta completata l'installazione, riavviare Apache e attivare il modulo ModMono eseguendo i seguenti comandi:
sudo / etc/init.d/apache2 restart
sudo a2enmod mod_mono
Ora dobbiamo cambiare il ASP.NET versione 2.0 nel file di configurazione.Aprire il file di configurazione in Gedit:
gksu gedit / etc/apache2/mods-available/mod_mono.conf
Una volta che il file di configurazione è aperto in Gedit, mettere un cancelletto (#) davanti alla riga "Include / etc / mono-server / mono-server-hosts.conf" ed eliminare l'hash di fronte a "Include / etc / mono -server2/mono-server2-hosts.conf ". Ora le due linee dovrebbe essere simile a questo:
# Include / etc / mono-server / mono-server-hosts.conf
Include / etc/mono-server2/mono-server2-hosts.conf
Salvare il file e chiuderlo. Ora riavviare Apache ancora una volta
sudo / etc/init.d/apache2 restart
L'installazione è completata.
Parte 2: Prove
Ora è il momento per verificare l'installazione. Abbiamo intenzione di creare un sito chiamato Ubuntu. Ma prima è necessario creare un file di configurazione per questo sito all'interno della directory "etc/apache2/sites-available /". Per effettuare questa operazione, eseguire il seguente comando:
gksu nautilus / etc/apache2/sites-available /
Si aprirà la cartella in Nautilus. Ora tasto destro del mouse all'interno della finestra e creare un nuovo file vuoto e il nome "Ubuntu". Quindi aprire il file utilizzando un editor di testo e incollare il seguente testo al suo interno, salvare e chiudere.
Alias ​​/ Ubuntu "/ var / www / Ubuntu"
AddMonoApplications default "/ Ubuntu :/ var / www / Ubuntu"
<Location /Ubuntu>
SetHandler mono
</ Location>
** Nota : .. La formattazione dei doppi apici nel codice sopra riportato deve essere modificato manualmente Basta eliminare tutte le virgolette e digitare di nuovo nuovo Assicurati di fare questo, altrimenti non può funzionare.)
Ora all'interno di Nautilus, accedere a / var / www / directory e creare una nuova cartella chiamata "Ubuntu". All'interno di questa cartella creare un nuovo file vuoto e il nome "index.aspx". Quindi aprire il file utilizzando un editor di testo e digitare la seguente riga di codice in esso. (Ancora una volta, non dimenticare di cancellare e ri-digitare le virgolette.)
<% Response.Write ("Funziona come un fascino!");%>
Salvare il file, chiudere e chiudere Nautilus troppo. Poi vengono le fasi finali in cui si attiva il sito e riavviare Apache per l'ultima volta:
a2ensite Ubuntu
sudo / etc/init.d/apache2 restart
Questo è tutto! Ora, aprire il browser web e scegliere:http://localhost/Ubuntu/index.aspx
Si dovrebbe vedere il testo "Funziona come un fascino!" Nella pagina.
Parte 3 (Facoltativo): disattivazione di un sito
Nella parte 2 abbiamo creato un sito chiamato Ubuntu. Prima siamo stati in grado di visualizzare la pagina aspx correttamente abbiamo bisogno di attivare il sito in Apache. Dopo che abbiamo finito test non è necessario per il sito di Ubuntu più. Prima di rimuovere i file, è necessario disabilitare il primo sito.
Aprire una nuova finestra di Terminale ed eseguire il seguente comando:
a2dissite Ubuntu
Ora è necessario rimuovere il file "Ubuntu" che abbiamo creato nel "etc/apache2/sites-available /" directory:
cd / etc/apache2/sites-available /
sudo rm Ubuntu
Allora dobbiamo cancellare la cartella "Ubuntu" all'interno della directory "/ var / www /" directory (che contiene il file index.aspx) e riavviare Apache:
cd / var / www /
sudo rm-rf Ubuntu
sudo / etc/init.d/apache2 restart
Ora è possibile chiudere Terminal. Aprite il vostro browser, cache chiaro e scegliere http://localhost/Ubuntu/index.aspx , ma non funzionerà più.
Nota
Anche se si dispone di PHP 5 e MySQL installato, l'installazione ModMono non li riguardano. Così si sarà in grado di lavorare con il vostro file PHP e ASP.NET allo stesso tempo.
Riferimenti :
Ubuntu Comunità e SqlServerDotNet . Parti 1 e 2 sono principalmente sulla base delle informazioni da queste due fonti, ma ho aggiunto alcuni passi al fine di semplificare ulteriormente il processo.

venerdì 19 ottobre 2012

Realizzare una scheda con due relè

In questo articolo vi illustro un circuito semplicissimo e molto banale: una scheda con due relè.  Un circuito dai mille usi, semplice da realizzare e alla portata di tutti. Si tratta di una scheda direi indispensabile: capita spesso che durante i nostri lavoretti di domotica con  Arduino abbiamo bisogno di qualche relè per controllare una lampada, un motore o altro e avere una scheda già pronta a portata di mano può semplificare di molto il lavoro.



Da una MCU (un picmicro, Arduino o quello che volete voi) arriva l’impulso positivo alla resistenza R2, il transistor Q1 viene mandato in saturazione e permette il flusso di corrente attraverso la bobina del relè K1 che si eccita e chiude tra X1-2 e X1-1 (contatto NO). D1 serve come sempre a scaricare a massa la corrente inversa generata dalla bobina del relè. L’accensione del relè viene segnalata mediante un led da 3mm.

La basetta è abbastanza piccola, misura circa 6×5 cm:


 

Il software utilizzato per  realizzare il circuito è EAGLE.



martedì 16 ottobre 2012

Arduino comandi vocali

Il modulo per il riconoscimento vocale da interfacciare con arduino è "EasyVR", e ne esistono vari modelli.
Il sito di supporto è www.veear.eu
Il modulo EasyVR permette la ricezione e l'interpretazione di comandi vocali da parte di arduino.


Attraverso il software EasyVR Commander e la libreria per arduino è possibile definire i comandi da ricevere ed eseguire, poi, tramite arduino.

Collegamento Arduino EasyVR.


  Il collegamento come si può ben vedere, è semplice, l'altoparlante non è spiegato, il filo nero o gnd va collegato nella parte interna del circuito e il rosso vcc in quella esterna.

Arduino RGB con potenziometro

In questo esempio vediamo come controllare sfumature e colori di un led RGB, con un potenziometro e un pulsante.


Il potenziometro regolerà l'intensità di colore, e il pulsante cambierà i colori.

Codice ARDUINO:



int sensorPin = A1; / / selezionare il pin di ingresso per il potenziometro
int buttonPin = 8; / / pulsante Digitale pin
basePin int = 9;

buttonState int = 0;
selectedColor int = 0;
currentColor int [3];


void setColor ()
{
  Serial.println ("- Imposta colore");
  for (int i = 0; i <3, + + i)
  {
    Serial.println (currentColor [i]);
    analogWrite (basePin + i, mappa (currentColor [i], 0, 255, 255, 0));
    / / AnalogWrite (basePin + i, currentColor [i]);
  }  
}

vuoto setup () {
  Serial.begin (9600);

  currentColor [0] = 0;
  currentColor [1] = 0;
  currentColor [2] = 0;

  pinMode (buttonPin, INPUT);

  pinMode (basePin, OUTPUT);
  pinMode (basePin + 1, OUTPUT);
  pinMode (basePin + 2, OUTPUT);

  setColor ();
}

void loop () 
{
  / / Legge il valore di colore dal sensore e remap al valore gamma rgb
  int actualColor = map (analogRead (sensorPin), 0,1023,1,255);


  buttonState = digitalRead (buttonPin);
  if (buttonState == HIGH)
  {    
    delay (300); / / attendere per ritornare alla sua posizione iniziale
    currentColor [selectedColor] = actualColor;
    setColor ();
    selectedColor = (selectedColor + 1)% 3;
  }


}

domenica 14 ottobre 2012

Arduino e Gmail

Cassetta della posta gmail, il cartoncino avanzato nel primo notificatore non può essere sprecato.
Realizzeremo un notificatore per gmail, quando arriverà un nuovo messaggio sul nostro account di gmail, il nostro arduino lo segnalerà.



Guarda il video

Codice PYTHON:


import serial, sys, feedparser
#Settings - Change these to match your account details
USERNAME="XXXXXXX@gmail.com"
PASSWORD="PASSWORDXXWD"
PROTO="https://"
SERVER="mail.google.com"
PATH="/gmail/feed/atom"
SERIALPORT = "/dev/tty.usbserial-FTE3RS4J" # Change this to your serial port!
# Set up serial port
try:
ser = serial.Serial(SERIALPORT, 9600)
except serial.SerialException:
print "no device connected - exiting"
sys.exit()

newmails = int(feedparser.parse(PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH)["feed"]["fullcount"])
 
# Output data to serial port
if newmails > 0:
ser.write("m")
print "some mail"
else:
ser.write("n")
print "no mail"
#print data to terminal


# Close serial port
ser.close()


Codice ARDUINO:


#include <MsTimer2.h>
#include <Servo.h>
Servo myservo;
int val;
int pos;
void flash() {
static boolean output = HIGH;
digitalWrite(9, output);
output = !output;
}
void setup()
{
Serial.begin(9600);
Serial.flush();
myservo.attach(10);
}
void loop()
{
if (Serial.available())
{
val = Serial.read();
Serial.println(val, BYTE);
if (val == 110) // n = 110 in dec
{
pinMode(9,0);
pos = 0;
}
else if (val == 109) //109 = m in dec
{
pinMode(9, OUTPUT);

MsTimer2::set(150, flash); // 150ms periodo
MsTimer2::start();
pos =140;
}  
}
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15);
}

Fonte

Arduino e Facebook

Costruire un cassetta della posta che ci avvisa dell'arrivo di una notifica di facebook.
Per costruire il nostro notificatore di facebook, ci servono: cartoncino blu, giallo, marrone e bianco, erbetta sintetica, un servo motore, un led blu e ovviamente il nostro arduino.


Alcune immagini del progetto Arduino-FB

La galleria di immagini che illustra i vari passaggi per la costruzione del nostro FB Notifier


Adesso veniamo al codice, suddiviso in due parti, una parte in python e l'altra in arduino.

Codice PYTHON:


import mechanize
import cookielib
import serial
import sys
import time
import warnings
 
''' VERSIONE 2.3
A differenza della versione 2.0, in questa implementazione:
Invece che contare partendo dai 2 tag HTML presenti di default <div class="c">, e' possibile clikkare il link:
clikka su Clear Notifications (restera' solo un <div class="c">)
e iniziare a contare per i > 1
 
In questo modo evita di contare inviti ad eventi o avvisi di compleanno come fossero notifiche.
'''
 
warnings.filterwarnings("ignore") #nasconde eventuali warning
 
SERIALPORT = raw_input("Inserire la porta seriale a cui e' connesso il dispositivo: ")
# Set up serial port
try:
 ser = serial.Serial(SERIALPORT, 9600)
 ser.timeout = None #Non imposta alcun tempo di timeout
except serial.SerialException:
 print "No device connected - exiting..."
 time.sleep(4)
 sys.exit()
 
 
#In alternativa si puo' andare su facebook.com/notifications.php e appoggiarsi al feed rss (utilizzando poi la libreria python: feedparser).
# Browser
br = mechanize.Browser()
 
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
 
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
 
# Follows refresh 0 but not hangs on refresh > 0
#br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
 
 
 
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 
 
# Open some site, let's pick a random one, the first that pops in mind:
r = br.open('http://m.facebook.com')
#html = r.read()
 
# Show the source
#print html
# or
#print br.response().read()
 
# Show the html title
print "- Connesso a: " + br.title()
 
# Select the first (index zero) form
br.select_form(nr=0)
 
try:
  attesa = input("\nOgni quanti secondi vuoi controllare la presenza di nuove notifiche? ")
  while(attesa < 5):
      attesa = input("\n- E' consigliato un valore non sotto i 5 secondi.\nInserisci nuovamente un valore: ")
except:
  print "E' necessario inserire un valore numerico, non una stringa.\nChiusura programma..."
  time.sleep(5)
  sys.exit()
 
print "\n- Inserisci i tuoi dati di accesso per Facebook:\n"
# Let's search
br.form['email']='%s' % raw_input("Inserisci Email: ")
br.form['pass']='%s' % raw_input("Inserisci Password: ")
 
br.submit()
x = br.response().read()
z = x.count("Combinazione e-mail/password errata.")
 
while z:
  print "Impossibile effettuare l'accesso, password o username errati. Riprovare:\n"
  go = False
  br.select_form(nr=0)
  br.form['email']='%s' % raw_input("Inserisci Email: ")
  br.form['pass']='%s' % raw_input("Inserisci Password: ")
  br.submit()
  x = br.response().read()
  z = x.count("Combinazione e-mail/password errata.")
else:
  #siamo perfettamente loggati. (z = 0)
  go = True
  stato = False #stato della bandierina, False = abbassata
  try:
    br.follow_link(text='Elimina notifiche', nr=0) #Pulisce le notifiche precedenti
  except:
    print "\n Nessuna Notifica! \n"
  print "\n- Contrassegnate come lette, tutte le precedenti notifiche...\n"
  ser.write("n") #riportiamo il servo alla posizione iniziale.
 
while True and go:
  try:
    #br.reload()
    #print br.response().read()
    x = br.open('http://m.facebook.com/home.php?refid=0').read()
    i = x.count('<div class="c">') #Questo campo HTML viene ripetuto piu' di 1 volta se c'e' una notifica nuova (prima pero' vengono lette tutte le notifiche quali eventi etc.).
  except:
      print "Ritardo nel ricaricare la pagina, 3 secondi di attesa applicati..\n"
      time.sleep(3)
  if i >= 1:
      notifica = True #Notifiche da leggere
  else:
      i = 0
      notifica = False #Nessuna notifica da leggere
#controllo:
  if notifica == True:
      if stato == False: #Se la bandierina e' abbassata
       ser.write("m")
       print "Nuova notifica su Facebook, sollevamento bandierina..."
       stato = True
      else:
       print "Sono presenti notifiche ancora da visionare..."
 
  elif stato == False:
       print "Zzz..." #Bandierina gia' abbassata, nessuna notifica da visionare
 
  else:
       ser.write("n")
       print "Nessuna nuova notifica, bandierina in discesa..."
       stato = False     
 
  time.sleep(attesa) #Attesa prima di controllare la presenza di nuove notifiche
 
 
#END


Codice ARDUINO:


#include <MsTimer2.h>
#include <Servo.h>
Servo myservo;
int val;
int pos;
void flash() {
static boolean output = HIGH;
digitalWrite(9, output);
output = !output;
}
void setup()
{
pinMode(9, OUTPUT);
Serial.begin(9600);
Serial.flush();
myservo.attach(10); //pin segnale servo connesso al pin digitale 10
}
void loop()
{
if (Serial.available())
{
val = Serial.read();
Serial.println(val, BYTE);
if (val == 110) // n = 110 in dec
{
pinMode(9,0);
pos = 0;
}
else if (val == 109) //109 = m in dec
{
pinMode(9, OUTPUT);
 
MsTimer2::set(150, flash); // 150ms periodo
MsTimer2::start();
pos =110; //110 gradi di rotazione perchè non essendo nel mio caso preciso il servo non arrivava a 90 gradi esatti ma si fermava poco prima
}    
}
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(23);
}


Fonte del Facebook notifier

venerdì 12 ottobre 2012

Arduino controllo IR 2° Parte


Adesso, arriva la parte interessante, vediamo come accendere e spegnere un led, tramite il telecomando.
Avete salvato il codice esadecimale del telecomando, spiegato nella 1°parte?
Bene.

In questa immagine si vede il circuito, il sensore IR è collegato al Pin2 e il lede che lampeggia ad ogni tasto premuto sul pin 13.

i PIN di arduino che ci serviranno sono: Pin 4 led, Pin 2 uscita sensore IR, Pin 5 led, Pin13 led.
veniamo al codice adesso

#include <IRremote.h>

int RECV_PIN = 2;//uscita IR
int RELAY_PIN = 4;//Led

IRrecv irrecv(RECV_PIN);
decode_results results;

// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
//  decode_results *results = (decode_results *)v
void dump(decode_results *results) {
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN) {
    Serial.println("Could not decode message");//non riesce a codificare
  }

    else if (results->decode_type == NEC) {
      Serial.print("Orion: ");
    }
 
    Serial.print(results->value, HEX);//visualizza il codice esadecimale
    Serial.print(" (");
    Serial.print(results->bits, DEC);
    Serial.println(" bits)");
  }

void setup()
{
  pinMode(RELAY_PIN, OUTPUT);
  pinMode(13, OUTPUT);//Led che lampeggia ad ogni segnale ricevuto
  pinMode(5, OUTPUT);//Led
    Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

int on = 0;
unsigned long last = millis();

void loop() {
  if (irrecv.decode(&results)) {
    // If it's been at least 1/4 second since the last
    // Led IR lampeggia ad ogni tasto premuto
    if (millis() - last > 250) {
      on = !on;
   
      digitalWrite(13,  HIGH );
      delay(200);
      digitalWrite(13,  LOW );
      delay(200);
      dump(&results);
    }
    last = millis();    
    irrecv.resume(); // Receive the next value
  }
  if (results.value==0x1){Serial.println("Amstrad 1");//tasto 1 blink led Pin5
  digitalWrite(5, HIGH);
  delay(100);
  digitalWrite(5, LOW);
  delay(100);
};
  if (results.value==0x2){Serial.println("Amstrad 2");//tasto 2 Led on/of
  digitalWrite(RELAY_PIN, on ? HIGH : LOW);

};

}


Il led sul Pin13 lampeggia ad ogni tasto premuto, segno che il sensore funziona ma bisogna specificare il codice ad arduino affinchè esegua il comando desiderato.

if (results.value==0x1): 0x1 è il codice esadecimale del tasto 1 del mio telecomando, sostituitelo con il vostro codice.

f (results.value==0x2): 0x2 è il codice esadecimale del tasto 2 del mio telecomando, sostituitelo con il vostro codice.

Sbizzarritevi e divertitevi con questo esempio, e al prossimo Tutorial.

giovedì 11 ottobre 2012

Arduino controllo IR 1°Parte

In questo tutorial, vedremo come controllare le uscite di arduino con il telecomando della tv.

Per prima cosa scaricate la libreria Arduino-IRremote per arduino 1.0.
Scompattatela rinominatela: IRremote e fate copia/incolla nella cartella: arduino-1.0/libraries, poi aprite l'ide di arduino e cercate tra gli esempi, la voce IRremote, per trovare alcuni esempi.


Per poter permettere la comunicazione tra il telecomando e arduino,per prima cosa davrete caricare lo sketch che vi permetterà di associare un tasto al relativo codice esadecimale.



Sketch: IRrecvdemo


#include <IRremote.h>

int RECV_PIN = 11;//uscita del sensore collegato al pin 11

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);//visualizza nel monitor seriale il codice esadecimale*
    irrecv.resume(); // Receive the next value
  }
}



*siccome il telecomando invia 2 codici dello stesso tasto,una volta uno e una volta l'altro segnateli entrambi, che potranno tornare utili.








mercoledì 10 ottobre 2012

arduino Blink led rgb


In questo esempio vedremo come effettuare un blink con un led RGB e arduino, un intervallo di colori di 1 secondo ciascuno, rosso, verde, blu.



int red=9,
    green=10,
    blue=11,
    i=0,
    j=0,
    color[]={red, green, blue},  // since array counts start a 0, color[0]=9, color[1]=10, color[2]=11
    intensity[]={0, 0,0}; // one intensity level for each color

void setup()
{
  // set pins as outputs
  pinMode(red,OUTPUT);
  pinMode(green,OUTPUT);
  pinMode(blue,OUTPUT);

  // turn off all colors
  analogWrite(red,0);
  analogWrite(green,0);
  analogWrite(blue,0);
}
void loop()
{

  analogWrite(red,255); // turn on red
  delay(1000); // wait a sec
  analogWrite(red,0); // turn off red

  analogWrite(green,255); // turn on green
  delay(1000); // wait a sec
  analogWrite(green,0); // turn off green

  analogWrite(blue,255); // turn on blue
  delay(1000); // wait a sec
  analogWrite(blue,0); // turn off blue

}

martedì 9 ottobre 2012

Comandare 2 servo motore con arduino

In questo esempio vedremo come pilotare due servo motore con arduino dal monitor seriale tramite  la tastiera del pc.

il codice arduino:


#include <Servo.h>//include la libreria del servo
int minPulse1     =  0;   // posizione minima o°
int maxPulse1     =  180; // posizione massima 180°
int turnRate1     =  10;  // ruota di 10° alla volta
int minPulse2     =  0;  // posizione minima o°
int maxPulse2     =  180; // posizione massima 180°
int turnRate2     =  10;  // ruota di 10° alla volta
int buttonPin     = 13;    // pin that the trigger will be connected to
/** The Arduino will calculate these values for you **/
int centerServo1;
int centerServo2;
int pulseWidth1;    // servo pulse width
int pulseWidth2;    // servo pulse width

Servo servo1;
Servo servo2;

void setup() {
  pinMode(buttonPin, OUTPUT);
  servo1.attach(3);//dichiara il servo nel pin 3 PWM
  servo2.attach(2);//dichiara il servo nel pin 2 PWM
  centerServo1 = maxPulse1 - ((maxPulse1 - minPulse1)/2);
  centerServo2 = maxPulse2 - ((maxPulse2 - minPulse2)/2);
  pulseWidth1 =  centerServo1;
  pulseWidth2 =  centerServo2;
  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  Serial.println(" Arduino Serial Servo Control");
  Serial.println("Press a, s, d, or w to move, spacebar to center, and f to fire");
  Serial.println();
}

void loop() {

  // check for serial input
  if (Serial.available() > 0) {

    int data = Serial.read(); // read the incoming byte:
    digitalWrite(buttonPin, LOW);  // turn the pin off on any incoming data
    switch(data)
    {
case 'a' :  pulseWidth1 = pulseWidth1 - turnRate1;  break;
case 'd' :  pulseWidth1 = pulseWidth1 + turnRate1;  break ;
case ' ' :  pulseWidth1 = pulseWidth2 = centerServo1;  break;
case 's' :  pulseWidth2 = pulseWidth2 - turnRate1;  break;
case 'w' :  pulseWidth2 = pulseWidth2 + turnRate1;  break ;
case 'f' :  digitalWrite(buttonPin, HIGH); delay (1000); digitalWrite(buttonPin, LOW); break;

    }
    // stop servo pulse at min and max
    if (pulseWidth1 > maxPulse1) { pulseWidth1 = maxPulse1; }
    if (pulseWidth1 < minPulse1) { pulseWidth1 = minPulse1; }

// stop servo pulse at min and max
    if (pulseWidth2 > maxPulse2) { pulseWidth2 = maxPulse2; }
    if (pulseWidth2 < minPulse2) { pulseWidth2 = minPulse2; }

     servo1.write(pulseWidth1);
     servo2.write(pulseWidth2);

    // print pulseWidth back to the Serial Monitor (uncomment to debug)
    Serial.print("Servo 1: ");
    Serial.print(pulseWidth1);
    Serial.print(" Servo 2: ");
    Serial.print(pulseWidth2);
    Serial.println("degrees");
  }
}

Adesso aprendo il monitor seriale visualizzerete il seguente testo:

Arduino Serial Servo Control
Press a, s, d, or w to move, spacebar to center, and f to fire

digitando uno dei tasti indicati sopra e premendo invio, vedrete il vostro servo muoversi


lunedì 8 ottobre 2012

Ubuntu server webmin


 Installare Webmin su Ubuntu
Webmin è un interfaccia web-based per l'amministrazione del sistema per Unix.
L'utilizzo di qualsiasi moderno browser, è possibile impostare gli account utente, Apache, DNS, condivisione di file e molto altro. Webmin elimina la necessità di modificare manualmente i file di configurazione di Unix, come / etc / passwd, e consente di gestire un sistema da console o remotely. Currently Non c'è nessun pacchetto Webmin nel tutorial Ubuntu repositories.
È possibile installare webmin per l'interfaccia web server, configurare apache2, mysql, server FTP etc...
vedremo come installare webmin in Ubuntu 12.04
Preparazione del sistema
Prima di tutto bisogna installare i seguenti pacchetti
sudo aptitude install perl libnet-SSLeay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl-perl libmd5

Ora scaricare l'ultima webmin utilizzando il seguente comando:

installare il pacchetto con il seguente comando:
sudo dpkg-i webmin_1.470_all.deb

Se volete installare e aggiornare Webmin tramite APT, modificare il file / etc / apt / sources.list sul sistema
sudo vi / etc / apt / sources.list
aggiungere la riga
deb http://download.webmin.com/download/repository sarge contrib
      Salvare e chiudere il file
È inoltre necessario scaricare ed installare la chiave GPG con cui viene firmato il repository, con i comandi: cd / root
wget http://www.webmin.com/jcameron-key.asc 

sudo apt-key add-jcameron key.asc
A questo punto è possibile installare con i comandi:
sudo apt-get update
sudo apt-get install webmin

Ora è necessario aprire il browser Web e digitare quanto segue
https://your-server-ip:10000/
Ora si dovrebbe vedere simile alla schermata seguente