JS判断访问网站的设备平台,跳转到对应优化的页面。
//平台、设备和操作系统
var system = {
win: false,
mac: false,
xll: false,
ipad: false
};
//检测平台
var p = navigator.platform;
system.win = p.indexOf("Win") == 0;
system.mac = p.indexOf("Mac") == 0;
system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
system.ipad = (navigator.userAgent.match(/iPad/i) != null) ? true : false;
//跳转语句,如果是手机访问就自动跳转到手机页面
if (system.win || system.mac || system.xll || system.ipad) {
//alert("PC");
} else {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
//alert("微信浏览器");
} else {
//alert("手机");
}
}
Factorio(异星工厂)自用开服脚本,自动初始化存档,自动载入最新的存档。
使用说明
1. 复制脚本到 start.sh
文件中请勿使用记事本
2. 修改 HOME_DIR
为你实际Factorio安装目录。
3. 编辑 server-settings.json
为你需要的配置放到Factorio的 data
目录下
4. 为脚本添加运行权限
#为脚本添加运行权限
sudo chmod +x start.sh
5. 运行脚本(建议使用screen)
warning:如果提示需要 GLIBC_2.18 请移步这里。
#安装screen
sudo yum install screen -y
#进入screen环境
screen
#运行脚本
./start.sh
首先,上效果图
你可能需要的准备
- 配置ESP8266的Arduino IDE环境 - IDZD
- NodeMCU连接&固件烧录 - IDZD
- 半离线安装EPS8266支持到Arduino IDE
- NTPClient库
- 安装支持库 - IDZD
- ESP8266使用I2C连接OLDE屏幕
连线&安装NTPClient库
安装NTPClient库
这次我们选择NTPClient
库,联网获取ntp时间。
#获取UNIX时间戳
getEpochTime();
#获取当前时间
getFormattedTime();
#获取星期,0是星期日
getDay();
连线
- D1 --- SDA
- D2 --- SCL
- 3V --- VCC
- G --- GND
代码
#include <Arduino.h>
#include <U8g2lib.h>
#include <time.h>
#include <SPI.h>
#include <Wire.h>
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>
#define SDA 05 //ESP8266 D1 PIN 05
#define SCL 04 //ESP8266 D2 PIN 04
const char *ssid = "360 N7 Pro";
const char *password = "123456780";
char *week = "";
//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);//设置访问的ntp服务器
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
u8g2.begin();
u8g2.enableUTF8Print();
}
void loop() {
timeClient.update();
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.firstPage();
do {
u8g2.setCursor(0, 15);
u8g2.print("北京时间:=");
u8g2.setCursor(0, 35);
u8g2.print(timeClient.getFormattedTime());
u8g2.setCursor(75, 35);
switch(timeClient.getDay();){
case 0:
week = "Sun.";
break;
case 1:
week = "Mon.";
break;
case 2:
week = "Tues.";
break;
case 3:
week = "Wed.";
break;
case 4:
week = "Thur.";
break;
case 5:
week = "Fri.";
break;
case 6:
week = "Sat.";
break;
}
u8g2.print(week);
u8g2.setCursor(0, 55);
time_t t;
struct tm *p;
t=timeClient.getEpochTime();
p=gmtime(&t);
char s[100];
//strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p);
strftime(s, sizeof(s), "%Y年%m月%d日", p);
u8g2.print(s);
} while ( u8g2.nextPage() );
Serial.println(timeClient.getEpochTime());
delay(1000);
}
首先,上效果图
你可能需要的前期准备
- 配置ESP8266的Arduino IDE环境 - IDZD
- NodeMCU连接&固件烧录 - IDZD
- 半离线安装EPS8266支持到Arduino IDE
- U8G2库 & 帮助文档
- 安装支持库 - IDZD
- 如何选择oled构造函数
连线&安装OLED驱动库
1. 安装OLED驱动库
这次我们选择U8G2
库,来驱动OLED屏幕。
2. 连线
- D1 --- SDA(数据)
- D2 --- SCL(时钟)
- 3V --- VCC
- G --- GND
代码
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
#define SDA 05 //ESP8266 D1 PIN 05
#define SCL 04 //ESP8266 D2 PIN 04
//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
void setup(void) {
u8g2.begin();
u8g2.enableUTF8Print();// 为 Arduino print() 函数启用UTF8支持
}
void loop(void) {
u8g2.clearBuffer();//清除当前Buffer内的像素
u8g2.setFont(u8g2_font_ncenB08_tr);// 英文字库
u8g2.setCursor(0, 10);
u8g2.print("Hello World!");// 英文 "Hello World"
u8g2.setFont(u8g2_font_unifont_t_chinese2);// 中文支持 chinese2: Lerning Level 1-6
u8g2.setCursor(0, 35);
u8g2.print("你好世界!");// 中文 "Hello World"
u8g2.setFont(u8g2_font_b10_t_japanese2);// 日文支持 japanese1: Lerning Level 1-6
u8g2.setCursor(0, 55);
u8g2.print("こんにちは世界!");// 日语 "Hello World"
u8g2.setFont(u8g2_font_unifont_t_symbols);
u8g2.drawUTF8(75, 35, "☀ ☁ ☂");
u8g2.sendBuffer();//发送Buffer内容到屏上
delay(1000);
}